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:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user