Как проверить, включены ли ссылочные типы, допускающие значение 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.

Другие вопросы по тегам