Por ejemplo, si tengo un método definido como ...¿Hay alguna forma de marcar un método para garantizar que T no sea nulo?
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
}
... y yo estoy llamando a que el método de alguna otra parte ...
void SomewhereElse()
{
T t = Create();
// >><<
}
... al >><<
, Lo sé (es decir, a mí, la persona que escribió esto) que t
está garantizado para no ser nulo. ¿Hay alguna manera (un atributo, quizás, que no he encontrado) de marcar un método como garantizar que un tipo de referencia que devuelve o que pasa de otra forma (tal vez un parámetro out
) esté garantizado por la lógica interna para que no sea nulo?
Tengo que admitir tímidamente que ReSharper es sobre todo por lo que me importa, ya que destaca todo lo que cree que podría causar ya sea InvalidOperationException
o NullReferenceException
. Me imagino que está leyendo algo que puedo marcar en mis métodos o simplemente sabe que Assert.IsNotNull
, comprobaciones booleanas simples o algunas otras cosas eliminarán la posibilidad de que algo sea nulo y que puede eliminar el resaltado.
¿Alguna idea? ¿Acabo de ser víctima de la enfermedad de oh-my-god-resharper-highlights-it-I-have-fix-it?
también sufro de oh-my-dios-ReSharper-destacados-que-me-tienen-a enfermedad de arreglarlo. Así que no estás solo. –