问题描述
我正在制作一个基于.Net 5 Source Generator的json库。
如果我知道json字符串属性不能为空,则可以通过跳过对json字符串属性的空检查来优化字符串处理。
启用可空引用类型后,我可以假设字符串(不带?)不为空。但是,如果关闭了“可空引用”类型,那么我将不能。
如何从.Net 5源生成器中确定是否启用了可空引用类型。
解决方法
由于#nullable
伪指令,有可能在不同的地方打开或关闭它。您应该做的是查看ITypeSymbol,以查看所要查找的任何符号,因为它将具有一个this enum属性NullableAnnotation
。在这种情况下,“ None”表示“该类型的功能尚未启用”,而Annotated / NotAnnotated表示该功能已启用,这是适当的状态。因此,在您的情况下,如果ITypeSymbol.NullableAnnotation为“ NotAnnotated”,则表示它是非空类型。