2015-09-27 8 views
10

のためにASP.NET MVCのソースコードからthis codeを考えてみましょう:は、使用して[NOTNULL]メソッドのパラメータ

public static IApplicationBuilder UseMvc(
      [NotNull] this IApplicationBuilder app, 
      [NotNull] Action<IRouteBuilder> configureRoutes) {...} 

this答えによると、注釈付きのパラメータがnullであってはなりません。では、なぜメソッドにnullを渡すことができますか?つまり、以下の場合、コンパイラが私に何かエラーを出さないのはなぜですか?

app.UseMvc(null); 
+2

関連:[NotNull属性](http://stackoverflow.com/q/30896853/464709)。 –

答えて

15

コンパイラでエラーが発生する可能性のある唯一の属性は、ObsoleteAttributeです。これは、この属性の動作がコンパイラーにハードコードされているためです。

NotNullのような属性は、一般に、コードを記述する際に警告またはエラーを生成するツール(ReSharperなど)のためのものです。この特定の属性hereについてお読みください。

また、PostSharpのようなツールをissue additional build-time errorsに使用することもできます。

+4

リンクhttps://github.com/aspnet/Home/wiki/Engineering-guidelines#argument-null-checkingは[NotNull]について話しません – ympostor

7

ヌルチェックをアスペクトによって実装する場合は、手動で行う必要はありません。明確な解決策は、オープンソースビルドウィーバーをFodyで使用することです。具体的に、あなたはNullGuard Fody

PM>インストール・パッケージNullGuard.Fody

がnullの警備員とFodyを使用するように設定を取得するために必要なすべてのものであるべき活用したいです。ドキュメントでは、必要に応じて微妙な穀粒の制御方法を示しています。

関連する問題