.net 如何知道类型是“string?”还是“string”?

8xiog9wr  于 2023-01-14  发布在  .NET
关注(0)|答案(1)|浏览(169)

我需要做一个检查器来确保所有的参数都被很好的实现了。但是我不能区分一个字符串变量是否被不必要地使用了nullable(?)。对于所有其他类型我可以区分。

Condition: Nullable.GetUnderlyingType(ParameterType) != null
    • 结果:**

字符串=;字符串?=;

Condition: !p.ParameterType.IsValueType
    • 结果:**

字符串=;字符串?=;

Condition: p.ParameterType.IsGenericType
    • 结果:**

字符串=;字符串?=;
有没有人对我如何进行差异化有什么建议?谢谢

bkkx9g8r

bkkx9g8r1#

Nullable.GetUnderlyingType用于通过Nullable<T>结构表示的nullable value typesNullable reference types执行某种类型擦除,在运行时不表示为类型。您可以尝试使用NullabilityInfoContext获取此信息:

NullabilityInfoContext context = new();
var nullabilityInfo = context.Create(methodInfo.GetParameters().First());
Console.WriteLine(nullabilityInfo.ReadState);    // Nullable
Console.WriteLine(nullabilityInfo.WriteState);   // Nullable

public interface IMyInterface
{
    Task GetMyModel(MyModel? p);
}

public class MyModel
{
}

相关问题