Например, если у меня есть метод, определенный как ...
T Create()
{
T t = Factory.Create<T>();
// ...
Assert.IsNotNull(t, "Some message.");
// -or-
if (t == null) throw new Exception("...");
// -or- anything that verifies that it is not null
}
... и я вызываю этот метод откуда-то еще ...
void SomewhereElse()
{
T t = Create();
// >><<
}
...at >><<
, я знаю (имеется в виду меня, человека, который это написал), что t
гарантированно не будет нулевым.Есть ли способ (возможно, атрибут, который я не нашел) пометить метод как гарантирующий, что внутренняя логика гарантирует, что ссылочный тип, который он возвращает или иным образом пропускает (возможно, параметр out
), не равен нулю?
Я должен смущенно признать, что ReSharper - это, в основном, причина, по которой я забочусь, поскольку он выделяет все, что, по его мнению, может вызвать InvalidOperationException
или NullReferenceException
.Я полагаю, что либо он читает что-то, что я могу пометить в моих методах, либо он просто знает, что Assert.IsNotNull
, простые булевы проверки или некоторые другие вещи устранят вероятность того, что что-то будет нулевым, и что он может удалить выделение.
Есть мысли?Я просто становлюсь жертвой болезни о-о-о-о-о-о-о-о-о-о-о-о-о-о-о-че-что?