If the parameter is defined as Nullable, always return "null" as default value. (#36)

* In case the parameter is defined as Nullable, always return "null".

* icon

* .
This commit is contained in:
Stef Heyenrath
2022-05-08 19:46:53 +02:00
committed by GitHub
parent b5b08d8c01
commit 533901ec48
4 changed files with 25 additions and 25 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
rem https://github.com/StefH/GitHubReleaseNotes
SET version=0.0.20
SET version=0.0.21
GitHubReleaseNotes --output "ReleaseNotes.md" --skip-empty-releases --exclude-labels question invalid doc --version %version%
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

@@ -6,25 +6,17 @@ namespace ProxyInterfaceSourceGenerator.Extensions;
internal static class ParameterSymbolExtensions
{
// private const string ParameterValueDefault = "default";
private const string ParameterValueNull = "null";
public static string GetRefPrefix(this IParameterSymbol ps)
{
switch (ps.RefKind)
return ps.RefKind switch
{
case RefKind.In:
return "in ";
case RefKind.Out:
return "out ";
case RefKind.Ref:
return "ref ";
default:
return string.Empty;
}
RefKind.In => "in ",
RefKind.Out => "out ",
RefKind.Ref => "ref ",
_ => string.Empty
};
}
public static string GetParamsPrefix(this IParameterSymbol ps) =>
@@ -40,7 +32,17 @@ internal static class ParameterSymbolExtensions
string defaultValue;
if (ps.ExplicitDefaultValue == null)
{
defaultValue = ps.Type.IsReferenceType ? ParameterValueNull : $"default({ps.Type})";
if (ps.NullableAnnotation == NullableAnnotation.Annotated)
{
// The parameter is defined as Nullable, so always use "null".
defaultValue = ParameterValueNull;
}
else
{
defaultValue = ps.Type.IsReferenceType
? ParameterValueNull : // The parameter is a ReferenceType, so use "null".
$"default({ps.Type})"; // The parameter is not a ReferenceType, so use "default(T)".
}
}
else
{
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Version>0.0.20</Version>
<Version>0.0.21</Version>
<TargetFramework>netstandard2.0</TargetFramework>
<ProjectGuid>{12344228-91F4-4502-9595-39584E5ABB34}</ProjectGuid>
<LangVersion>10</LangVersion>
@@ -12,14 +12,13 @@
<PackageId>ProxyInterfaceGenerator</PackageId>
<Description>This project uses Source Generation to generate an interface and a Proxy class for classes. This makes it possible to wrap external classes which do not have an interface, in a Proxy class which makes it easier to Mock and use DI.</Description>
<PackageTags>class;interface;proxy;SourceGenerator;Analyzer;Generation;Generate;wrap</PackageTags>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageReleaseNotes>$([System.IO.File]::ReadAllText("$(MSBuildProjectDirectory)/../../PackageReleaseNotes.txt"))</PackageReleaseNotes>
<PackageProjectUrl>https://github.com/StefH/ProxyInterfaceGenerator</PackageProjectUrl>
<RepositoryType>git</RepositoryType>
<RepositoryUrl>https://github.com/StefH/ProxyInterfaceGenerator</RepositoryUrl>
<PackageReadmeFile>PackageReadme.md</PackageReadmeFile>
<PackageIcon>icon.png</PackageIcon>
<IncludeBuildOutput>false</IncludeBuildOutput>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)Generated</CompilerGeneratedFilesOutputPath>
@@ -33,32 +32,31 @@
</PropertyGroup>
<ItemGroup>
<None Include="../../resources/icon.png" Pack="true" PackagePath="" />
<None Include="../../PackageReadme.md" Pack="true" PackagePath="" />
</ItemGroup>
<ItemGroup>
<!--<PackageReference Include="AutoMapper" Version="10.1.1" />-->
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.3.3">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<!--<PackageReference Include="Microsoft.CodeAnalysis.Common" Version="3.10.0" PrivateAssets="all" />-->
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.1.0" PrivateAssets="all" />
</ItemGroup>
<ItemGroup>
<!--<ItemGroup>
<ProjectCapability Include="DynamicDependentFile" />
<ProjectCapability Include="DynamicFileNesting" />
</ItemGroup>
</ItemGroup>-->
<ItemGroup>
<Compile Update="ProxyClassesGenerator.*.cs">
<Compile Update="ProxyClassesGenerator.AutoMapper.cs">
<DependentUpon>ProxyClassesGenerator.cs</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<None Remove="bin\Release\netstandard2.0\\ProxyInterfaceSourceGenerator.dll" />
<None Remove="bin\Release\netstandard2.0\\ProxyInterfaceSourceGenerator.dll" />
</ItemGroup>
<ItemGroup>