Ein häufiges Problem in jeder Sprache besteht darin, zu bestätigen, dass Parameter, die an eine Methode gesendet werden, Ihren Anforderungen entsprechen, und wenn dies nicht der Fall ist, um nette, informative Fehlermeldungen zu senden. Diese Art von Code wird immer wieder wiederholt, und wir versuchen oft, Helfer dafür zu schaffen. In C# scheint es jedoch, dass diese Helfer gezwungen sind, sich mit einigen Duplikaten zu befassen, die uns von der Sprache und dem Compiler auferlegt wurden. Um zu zeigen, was ich meine, lassen Sie mich etwas rohen Code ohne Helfer vorstellen, gefolgt von einem möglichen Helfer. Dann werde ich auf die Duplizierung im Helfer hinweisen und meine Frage genau formulieren.Was ist die glatteste, ansprechendste Syntax, die Sie gefunden haben, um Parameterkorrektheit in C# zu bestätigen?
Zuerst wird der Code ohne Helfer:
public void SomeMethod(string firstName, string lastName, int age)
{
if(firstName == null)
{
throw new WhateverException("The value for firstName cannot be null.");
}
if(lastName == null)
{
throw new WhateverException("The value for lastName cannot be null.");
}
// Same kind of code for age, making sure it is a reasonable range (< 150, for example).
// You get the idea
}
}
der Code mit einem vernünftigen Versuch eines Helfer nun:
public void SomeMethod(string firstName, string lastName, int age)
{
Helper.Validate(x=> x !=null, "firstName", firstName);
Helper.Validate(x=> x!= null, "lastName", lastName);
}
der Haupt Frage ist das: Beachten Sie, wie der Code passen muss s der Wert des Parameters und der Name des Parameters ("firstName" und firstName). Dies ist so die Fehlermeldung kann sagen, "Blah bla bla der Wert für den firstName Parameter." Hast du irgendeinen Weg gefunden, um dies durch Reflexion oder irgendetwas anderes zu umgehen? Oder eine Möglichkeit, es weniger schmerzhaft zu machen?
Und ganz allgemein, haben Sie andere Möglichkeiten gefunden, um diese Aufgabe der Validierung von Parametern zu rationalisieren und gleichzeitig die Code-Duplizierung zu reduzieren?
EDIT: Ich habe gelesen, dass Menschen über die Verwendung der Parameter-Eigenschaft sprechen, aber nie einen Weg um die Duplizierung gefunden. Hat jemand Glück dabei?
Danke!
Verwendung von 'ApplicationException' Klasse wird nicht empfohlen. –
Nitpicking: _Direct_ Verwendung von 'ApplicationException' wird nicht empfohlen –
OK, ich habe es in Ausnahme geändert, nur um Ablenkungen zu vermeiden.Abgesehen davon, wenn die Empfehlung auf Kommentaren der Jungs basiert, die das "Framework Guidelines" -Buch geschrieben haben, bin ich nicht wirklich davon überzeugt (obwohl diese Jungs ein paar gute Sachen geschrieben haben). Aber das ist eine Diskussion für einen anderen Tag. –