确定类型引用是否可为空

5

使用即将推出的C# 8可空引用类型特性,我如何在运行时确定字段/方法/属性等的类型签名是可空引用类型还是非可空引用类型?


Roslyn不是运行时检查的正确工具。您需要使用Reflection - Matthew
可能是如何在运行时检测类型是否可为空?的重复问题。 - Stephen Kennedy
2个回答

1
在运行时,您应该能够通过检查自定义属性来检查这一点。这就是当前原型捕获此信息的方式。但我想在发布之前,仍然可能会有一些变化。 请参阅由yaakov提供的官方C#语言设计存储库中this问题的答案。

0

我认为你做不到。

从我的理解来看,它完全是一个编译时的事情。

即refclass = not nullable, refclass? = nullable,在编译时编译器会检查这个。

运行时“并不关心”-类并没有改变。我可以通过空值检查将可为空的转换为非空的,编译器会很高兴。


1
他们甚至不放置自定义属性吗?编辑:如果一个程序集使用早期编译创建的DLL,他们不想有一种方法来“信号”参数类型是非空的吗? - Jeppe Stig Nielsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接