I use c# 8 and nullable analyzers in .csproj
<PropertyGroup>
<Nullable>enable</Nullable>
<RunAnalyzersDuringBuild>true</RunAnalyzersDuringBuild>
<RunAnalyzersDuringLiveAnalysis>true</RunAnalyzersDuringLiveAnalysis>
</PropertyGroup>
Below code which validates request via extracted method, shows such warning:
class Program
{
public void Foo(Data request)
{
Validate(request);
request.Properties.TryGetValue("bar", out var bar);
}
private static void Validate(Data request)
{
if (request == null)
{
throw new ArgumentNullException(nameof(request));
}
if (request.Properties == null)
{
throw new ArgumentNullException(nameof(Data.Properties));
}
}
}
public class Data
{
public Dictionary<string, string>? Properties { get; set; }
}
If I put validation code directly into method (like below) there is no warning.
Why is that?
How can I have Validation extracted and don't have warning?
class Program
{
public void Foo(Data request)
{
if (request == null)
{
throw new ArgumentNullException(nameof(request));
}
if (request.Properties == null)
{
throw new ArgumentNullException(nameof(Data.Properties));
}
request.Properties.TryGetValue("bar", out var bar);
}
}
public class Data
{
public Dictionary<string, string>? Properties { get; set; }
}
