Wir verwenden das .NET 2.0-Framework mit C # 3.0 (ich denke, es ist die letzte Version von C #, die auf der 2.0-Version des Frameworks ausgeführt werden kann, korrigiere mich, wenn ich falsch liege).
Ist in C # etwas eingebaut, das diese Art der Parametervalidierung bequemer machen kann?
%Vor%Diese Art der Parametervalidierung wird ein allgemeines Muster und führt zu einer Menge "fast boilerplate" Code, der in unseren öffentlichen Methoden durchgegangen wird.
Wenn nichts eingebaut ist. Gibt es großartige freie Bibliotheken, die wir benutzen könnten?
Ich erstelle normalerweise statische Hilfsmethoden ...
z. B.
%Vor%Bedeutet, dass Sie Ihren Code auf etwas Ähnliches wie unten zusammenfassen können und es nur ein wenig aufgeräumter machen.
%Vor%Oder Sie können es als eine Erweiterungsmethode einpacken:
%Vor%Und verwende wie:
%Vor%Und wenn Sie sich wirklich schick fühlen, könnten Sie die Parameternamen wahrscheinlich durch Reflexion abfragen. Reflection ist etwas langsam, also würden Sie das nur tun, wenn Sie eine Ausnahme auslösen würden, aber Sie können dadurch nicht ständig den Namen des Literalparameters eingeben.
Sie könnten einen ilweaver wie Post Sharp verwenden, bedenken Sie, dass Compiler als Dienst in C # 5 diese Art von machen wird Sachen eingebaut.
Ich persönlich würde diesen Ansatz nicht empfehlen, es sei denn, das Problem ist groß und muss angegangen werden. In der Regel sind einige der oben beschriebenen und bestätigten Vorbedingungen eine bewährte Methode.
EG:
%Vor%Sie könnten diese Art von Inhalten auch in Code-Verträge integrieren, die Sie ausführen könnten einige reiche statische Analyse.
Es ist nicht in das .Net Framework integriert, aber Sie können Fluent Argument Validation
Um Sams Antwort oben hinzuzufügen, hier ist ein Link, der Ihnen erklärt, wie Sie solche Attribute mit PostSharp implementieren können:
Tags und Links c# parameters parameter-passing