NotNull属性

时间:2015-06-17 16:07:15

标签: c# asp.net-core

我正在查看asp.net vnext engineering guideline,并注意到他们建议使用NotNull属性,而不是显式检查输入参数为null并抛出ArgumentNullException。让我感到困惑的是,根据这个指南,它足以声明这个属性,并且检查代码将在编译时生成到方法体中。我已经尝试在我的测试项目中执行此操作但是魔术没有发生,即它抛出异常System.NullReferenceException而不是System.ArgumentNullException。这应该如何工作?他们是否会在编译时使用一些AOP库来注入检查代码?

1 个答案:

答案 0 :(得分:47)

NotNullAttribute消失了。 ASP.NET小组是replaced with conditionally throwing ArgumentNullException,后来是removed。截至2016年1月12日,没有计划将其恢复。 (那时,我正在研究ASP.NET团队。)

该属性将通过预编译步骤替换,使用Roslyn,通过执行实际检查的代码。

但是,截至2015年6月17日,该功能尚未准备就绪。它将在更高版本中发布。到目前为止,an empty internal attribute只是should be implemented in each project again

[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false)]
internal sealed class NotNullAttribute : Attribute
{
}

<击>