C# 8.0 introduced nullable reference types. Since .NET 6 we are able to easily retreive nullability info through reflection.
Let's assume the following class.
class Person{public required string FirstName { get; init; }public string? MiddleName { get; init; }public required string LastName { get; init; }}
To retreive nullability info we use the new NullabilityInfoContext.
// Program.cs - Top-level statementsvar personType = typeof(Person);var middleNameProperty = personType.GetProperty("MiddleName")!;var nullabilityInfo = new NullabilityInfoContext().Create(middleNameProperty);Assert.Equal(nullabilityInfo.ReadState, NullabilityState.Nullable);
That's it!