Je regarde asp.net vnext directive technique et j'ai remarqué qu'ils recommandent d'utiliser l'attribut NotNull
au lieu d'une vérification explicite de l'argument d'entrée pour null et le lancement de ArgumentNullException
. Ce qui m'a dérouté, c'est que, sur la base de cette directive, il suffit de déclarer cet attribut et le code de vérification sera généré lors de la compilation dans le corps de la méthode. J'ai essayé de faire cela dans mon projet de test, mais la magie n'a pas eu lieu c'est-à-dire qu'elle a jeté l'exception System.NullReferenceException
au lieu de System.ArgumentNullException
. Comment cela est-il censé fonctionner? Vont-ils utiliser une bibliothèque AOP pour injecter le code de vérification au moment de la compilation?
Le NotNullAttribute
est parti. C'était remplacé par jeter conditionnellement ArgumentNullException
et ensuite supprimé par l'équipe ASP.NET. À compter du 12 janvier 2016, il n’est pas prévu de le ramener. (À ce moment-là, je travaillais sur l'équipe ASP.NET.)
L'attribut sera remplacé par une étape de pré-compilation, à l'aide de Roslyn, par un code qui effectue la vérification réelle.
Cependant, la fonctionnalité n'est pas encore prête à compter du 17 juin 2015. Elle viendra dans une version ultérieure. Jusqu'ici, il ne reste que attribut interne vide que devrait être à nouveau implémenté dans chaque projet :
[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false)] internal sealed class NotNullAttribute : Attribute { }