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