Open
Description
Description
If you have a class with:
a) a property which returns a value tuple; and
b) an indexer with a non-nullable reference type parameter
then when looking at the NullabilityInfoContext
for the indexer parameter, it appears as Unknown
instead of NotNull
.
Reproduction Steps
Create a console app with the following code:
internal class Program
{
public class Foo
{
public string this[string name] => throw new NotImplementedException();
// *** If you comment out this property, the problem goes away ***
public (int A, int B) ValueTupleProp { get; }
}
static void Main(string[] args)
{
// Get the PropertyInfo for the indexer.
PropertyInfo propInfo = typeof(Foo).GetProperty("Item")!;
// Get the ParameterInfo for the indexer parameter (non-nullable string).
ParameterInfo paramInfo = propInfo.GetIndexParameters()[0];
var nullabilityInfo = new NullabilityInfoContext().Create(paramInfo);
Console.WriteLine($"{nullabilityInfo.ReadState}, {nullabilityInfo.WriteState}");
Console.ReadKey();
}
}
Expected behavior
The NullabilityInfoContext
properties report NotNull
.
Actual behavior
The NullabilityInfoContext
properties report Unknown
. However, if you comment out the ValueTupleProp
property, then it magically works as expected.
Regression?
No response
Known Workarounds
No response
Configuration
Tried running in .NET 6.0 and .NET 8.0 on Windows 11.
Other information
No response