Durchlaufen Methode die Parameter für die Validierung
Habe ich mir überlegt, dass es hilfreich wäre, um in der Lage sein, so etwas zu tun, zum Beispiel, um zu überprüfen, die Parameter für null-Referenzen und eventuell eine Ausnahme werfen.
Das würde Tipparbeit ersparen und auch würde es unmöglich machen zu vergessen, fügen Sie ein Häkchen, wenn ein neuer parameter Hinzugefügt wird.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, nicht, es sei denn, Sie zählen:
Zu vermeiden, die bei der array-Erstellung Treffer, könnten Sie haben eine Reihe von überladungen für unterschiedliche Anzahl von Argumenten:
Alternative wäre die Nutzung von Parametern zu deklarieren, die Parameter sollte nicht null sein, und bekommen PostSharp zu generieren, die entsprechenden überprüfungen:
Zugegeben, ich würde wahrscheinlich wollen, PostSharp, es zu konvertieren in Code-Verträge Anrufe, aber ich weiß nicht, wie gut die beiden zusammen spielen. Vielleicht eine Tag werden wir in der Lage zu schreiben, der Spec#-wie:
... aber nicht in der nahen Zukunft 🙂
Können Sie definieren parameter der Methode mit einem
params
Schlüsselwort. Dadurch wird es möglich, übergeben Sie eine variable-Länge-Anzahl der Parameter Ihrer Methode. Sie können dann Durchlaufen Sie diese und überprüfen von null-Referenzen oder was auch immer du willst.Meiner Meinung nach aber, es ist nicht ein guter Weg, Dinge zu tun. Sie müssen manuell zu Steuern, die Typ Ihrer Parameter, Ihre position in der Eingabe-array, und Sie werden nicht in der Lage sein zu verwenden von intellisense in Visual Studio.
Ich hatte die gleiche Frage vor einiger Zeit, wollte aber so tun, für logging-Zwecke. Ich habe nie eine gute Lösung gefunden, aber diesen link gefunden, bezüglich der Verwendung eines AOP-basierten Ansatz für die Anmeldung-Methode Eingaben und verlassen. Das wesentliche, es ist notwendig, den Rahmen, die Lesen können, die Klasse und einfügen von code zur Laufzeit zu tun, was Sie Sie zu tun versuchen. Klingt nicht einfach.
Wie kann ich abfangen des Aufrufs einer Methode in C#?
Ist es möglich, zum Durchlaufen der Parameter, die deklariert wurden für eine Methode, die per reflection), aber ich sehe keinen Weg, um den Wert dieser Parameter für eine bestimmte Methode aufrufen ...
Vielleicht könnten Sie Postsharp, und erstellen ein Aspekt, in dem Sie die überprüfung. Dann, zur compile-Zeit, Postsharp kann 'Weben' der Aspekt (einschleusen von zusätzlichem code) an jede Methode, die Sie 've geschrieben ...
Können Sie Einblick in Die Validation Application Block, die behandelt werden kann als ein Beispiel für die automatisierte Validierung und Der Unity Application Block (insbesondere seine interception-Funktion) in Bezug auf das abfangen der Anrufe und für die Inspektion Parameter.
Könnten Sie sehr wohl automatisieren parameter überprüfen mit einem AOP Bibliothek wie PostSharp.
Im Anschluss an ein triviales Beispiel einer Methode mit der
params
Schlüsselwort, RaYell sagt:Ich würde sicherlich Zustimmen, dass das deklarieren einer Methode, die zwei
strings
manint
eineobject
kann null sein, und eine andereMyClass
Objekt mitparams
ist eine schlechte Idee. Allerdings gibt es sind (meiner Meinung nach) vollkommen gültig und entsprechenden Anwendungen derparams
Schlüsselwort, nämlich dann, wenn die Parameter sind alle vom gleichen Typ. Zum Beispiel:Erhalten Sie die Liste der ungültigen Parameter.
Also dann kann man nur noch hinzufügen