2015-09-27 4 views
10

Betrachten this code von Quellcode ASP.NET MVC:mit [NotNull] für eine Parameter-Methode

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

Nach this Antwort müssen die kommentierten Parameter nicht null sein. Warum kann ich null an die Methode übergeben? Das heißt, im folgenden Fall gibt mir der Compiler keinen Fehler?

app.UseMvc(null); 
+2

Related: [NotNull-Attribut] (http://StackOverflow.com/q/30896853/464709). –

Antwort

15

das einzige Attribut, das der Compiler führen kann, einen Fehler zu erzeugen, ist die ObsoleteAttribute. Dies liegt daran, dass das Verhalten dieses Attributs im Compiler fest codiert ist.

Attribute wie das NotNull Attribut sind im Allgemeinen für Werkzeuge (wie ReSharper) gedacht, um Warnungen oder Fehler beim Schreiben von Code zu erzeugen. Bitte lesen Sie über dieses spezielle Attribut here.

Sie können auch Tools wie PostSharp zu issue additional build-time errors verwenden.

+4

Link https://github.com/aspnet/Home/wiki/Engineering-guidelines#argument-null-checking redet nicht über [NotNull] – ympostor

7

Wenn Sie Null-Checks verschieben möchten, die nach Aspekten implementiert werden und nicht von Hand ausgeführt werden müssen. Die klare Lösung ist, den Open Source Build Weaver Fody zu verwenden. Insbesondere möchten Sie die>NullGuard Fody

PM nutzen Install-Package NullGuard.Fody

alles sein sollte erforderlich eingerichtet bekommen Fody zu verwenden, mit null Wachen. Die Dokumentation zeigt, wie Sie feinkörnige Kontrolle haben können, wenn Sie es wünschen.

Verwandte Themen