Description
Currently, Kiota generates C# classes with conditional compilation to use nullable reference types. For example:
// <auto-generated/>
using Microsoft.Kiota.Abstractions.Serialization;
using System.Collections.Generic;
// […snip…]
/// <summary>The Notes property</summary>
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
public string? Notes { get; set; }
#nullable restore
#else
public string Notes { get; set; }
#endif
/// <summary>The subject property</summary>
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
public string? Subject { get; set; }
#nullable restore
#else
public string Subject { get; set; }
#endif
That's a lot of noise making the generated code hard to read. Instead, it should look like this:
// <auto-generated/>
#nullable enable
using Microsoft.Kiota.Abstractions.Serialization;
using System.Collections.Generic;
// […snip…]
/// <summary>The Notes property</summary>
public string? Notes { get; set; }
/// <summary>The subject property</summary>
public string? Subject { get; set; }
I know this has been already discussed in #2594 (comment) but I think the conclusion was wrong.
Nullable reference types, introduced in C# 8 are a compiler feature. So it's totally fine to use nullable reference types even when targeting lower than .NET Standard 2.1, such as .NET Standard 2.0 or .NET Framework 4.6.2, 4.7.x etc.
In order to make the code with nullable reference types compile, one simply has to explicitly specify the C# language version to at least 8.0 in the csproj file:
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net462</TargetFrameworks>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
The requirement for nullable reference types to work is the version of the SDK that is used, not the target framework. C# 8 was introduced along with .NET Core 3.0 meaning that it will work with any SDK from 3.0.0 onwards. And, as stated in Kiota documentation, the .NET 8 SDK is required anyway.
Metadata
Metadata
Assignees
Type
Projects
Status
Activity
Unconditionally generate C# classes with nullable reference types
Unconditionally generate C# classes with nullable reference types
Unconditionally generate C# classes with nullable reference types
55 remaining items