考虑一下来自ASP.NET MVC源代码的this code:
public static IApplicationBuilder UseMvc(
[NotNull] this IApplicationBuilder app,
[NotNull] Action<IRouteBuilder> configureRoutes) {...}
根据this的答案,带注释的参数不能为null。那为什么我可以将null传递给该方法呢?也就是说,在以下情况下,为什么编译器没有给我任何错误?
app.UseMvc(null);
最佳答案
导致编译器生成错误的唯一属性是 ObsoleteAttribute
。这是因为此属性的行为被硬编码到编译器中。
诸如NotNull
属性之类的属性通常是供工具(如ReSharper)在编写代码时生成警告或错误的。请阅读有关此特定属性here的信息。
您也可以使用PostSharp之类的工具来issue additional build-time errors。