Estoy mirando la pauta de ingeniería de asp.net vnext y noté que recomiendan usar el atributo NotNull
en lugar de verificar explícitamente el argumento de entrada para nulo y lanzar ArgumentNullException
. Lo que me confundió es que, según esta guía, basta con declarar este atributo y el código de verificación se generará en el momento de la compilación en el cuerpo del método. Intenté hacer esto en mi proyecto de prueba, sin embargo, la magia no sucedió, es decir, lanzó la excepción System.NullReferenceException
en lugar de System.ArgumentNullException
. ¿Cómo se supone que funciona esto? ¿Van a usar alguna biblioteca AOP para inyectar el código de verificación en tiempo de compilación?
El NotNullAttribute
se ha ido. Se reemplazó con el lanzamiento condicional de ArgumentNullException
y, posteriormente, el equipo de ASP.NET lo eliminó . A partir del 12 de enero de 2016, no hay ningún plan para recuperarlo. (En ese momento, estaba trabajando en el equipo de ASP.NET).
El atributo se reemplazará a través de un paso de compilación previa, utilizando Roslyn, por el código que realiza la verificación real.
Sin embargo, la función aún no está lista a partir del 17 de junio de 2015. Vendrá en una versión posterior. Hasta ahora, es solo un atributo interno vacío que debe implementarse nuevamente en cada proyecto :
[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false)] internal sealed class NotNullAttribute : Attribute { }