Возможное нулевое назначение в ReSharper. Я не вижу, как это может быть нулевым? - PullRequest
1 голос
/ 13 января 2012

Я получаю следующее предупреждение:

Возможное «нулевое» присвоение объекту, помеченному как «Значение не может быть атрибут null

Мой код:

if (verifier.GetType().GetInterface(typeof(IAsyncVerifier).FullName, true) == null)
                {
                    continue;
                }

Предупреждение дано на typeof(IAsyncVerifier).FullName части. Как это может быть нулевым? Как бы вы это исправить? Или, может быть, есть лучший способ выяснить, реализует ли объект определенный интерфейс?

1 Ответ

6 голосов
/ 13 января 2012

Или, может быть, есть лучший способ выяснить, реализует ли объект конкретный интерфейс?

Используйте оператор is для проверки, является ли тип объекта производным от определенного интерфейса или класса

if (verifier is IAsyncVerifier)

Посмотрите на эту статью MSDN Type.FullName Он говорит, что свойство ничего не вернет.

... Ничего, если текущий экземпляр представляет параметр универсального типатип массива, тип указателя или тип byref, основанный на параметре типа, или универсальный тип, который не является определением универсального типа, но содержит параметры неразрешенного типа.

Если вы уверены, что приДля доступа к FullName это значение не будет равно нулю. Вы можете отключить это предупреждение, используя //resharper disable comment

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...