Überprüfen von Argumenten
Die folgenden Richtlinien tragen dazu bei, dass Argumente ordnungsgemäß überprüft werden.
Überprüfen Sie Argumente, die an öffentliche, geschützte oder explizit implementierte Member übergeben werden. Lösen Sie System.ArgumentException oder eine der abgeleiteten Klassen, aus, wenn die Validierung fehlschlägt.
Diese Richtlinie erfordert nicht, dass der Validierungscode im öffentlich sichtbaren Member vorhanden ist. Es ist zulässig, die Argumente an eine interne Methode zu übergeben, die die Validierung behandelt.
Lösen Sie System.ArgumentNullException aus, wenn ein NULL-Argument übergeben wird, doch der Member keine NULL-Argumente (Nothing in Visual Basic) unterstützt.
Überprüfen Sie Enumerationsparameter.
Sie können nicht davon ausgehen, dass Enumerationsargumente in der Enumeration definierte Werte sind, weil die Common Language Runtime (CLR) die Umwandlung jedes ganzzahligen Werts in einen Enumerationswert unterstützt, unabhängig davon, ob der Wert in der Enumeration definiert ist.
Verwenden Sie System.Enum.IsDefined(System.Type,System.Object) für Überprüfungen des Enumerationsbereichs, da die Methode auf dem Laufzeittyp der Enumeration beruht, der je nach Version unterschiedlich sein kann.
In einer späteren Version einer Bibliothek können einer veröffentlichten Enumeration Werte hinzugefügt werden. Die Verwendung von IsDefined für die Datenvalidierung kann gefährlich sein, weil vorhandener Code (der den neuen Wert nicht behandelt hat) den neuen Wert als gültige Eingabe behandelt, da IsDefined für den neuen Wert true zurückgibt. Überprüfen Sie, ob die Eingabe im Bereich der Werte liegt, die das Programm unterstützt, und lösen Sie andernfalls eine Ausnahme aus.
Beachten Sie, dass übergebene änderbare Argumente nach der Überprüfung möglicherweise geändert wurden.
Wenn der Member sicherheitsrelevant ist, erstellen Sie eine private Kopie des änderbaren Objekts, und verwenden Sie für die Validierung und Verarbeitung die Kopie. Dies gilt nur für änderbare Daten. Unveränderliche Daten, z. B. Uri-Objekte, müssen nicht kopiert werden.
Copyright für einzelne Teile 2005 Microsoft Corporation. Alle Rechte vorbehalten.
Copyright für einzelne Teile Addison-Wesley Corporation. Alle Rechte vorbehalten.
Weitere Informationen zu Entwurfsrichtlinien finden Sie unter „Framework-Entwurfs-Richtlinien: Idiome, Konventionen und Muster für wiederverwendbare .NET-Bibliotheken von Krzysztof Cwalina“ book und Brad Abrams, veröffentlicht von Addison-Wesley, 2005.