Как проверить, включены ли ссылочные типы, допускающие значение NULL, в генераторе исходного кода .net 5
Я делаю json-библиотеку на основе .Net 5 Source Generator.
Я могу оптимизировать обработку строк, пропуская нулевые проверки при анализе свойств строки json, если я знаю, что они не могут быть нулевыми.
С Nullable Reference Types я могу предположить, что строка (без?) Не является нулем. Однако, если типы Nullable References отключены, я не могу.
Как я могу определить с помощью генератора исходного кода.Net 5, включены ли ссылочные типы, допускающие значение NULL, или нет.
0 ответов
Из-за
#nullable
Директива может быть включена или выключена в разных местах. Что вам следует сделать, так это посмотреть на ITypeSymbol для любого символа, на который вы смотрите, так как у него будет
NullableAnnotation
свойство, которое является этим перечислением. "Нет" в этом случае означает, что "функция не была включена для этого типа", а "Аннотированный /NotAnnotated" означает, что функция включена и это соответствующее состояние. Итак, в вашем случае, если ITypeSymbol.NullableAnnotation имеет значение "NotAnnotated", это означает, что это тип, не допускающий значения NULL.