Was Sie für die Validierung ist fragen, und es gibt mehrere verschiedene Validierung Routen in der .net Framework
einige Beispiele sind IDataErrorInfo, INotifyDataErrorInfo und ValidationRule
welches ist das richtige für Sie hängt davon ab, was Sie tun
WPF ist so konzipiert, diese in Ansichten automatisch enthalten, so einige gute Beispiele wie here bietet aber sie arbeiten auch nur für die manuelle Validierungstests
public class MyClass: IDataErrorInfo
{
public string SomeString1 { get; set; }
public string AnotherString2 { get; set; }
public bool IsValid
=> string.IsNullOrWhiteSpace(Error);
public string Error
=> this["All"];
public string this[string field]
{
get
{
string err = "";
if (field == "All" || "SomeString1" == field)
{
if (SomeString1.Length > 15)
err += "SomeString1 > 15";
if (SomeString1.Length < 5)
err += "SomeString1 < 5";
}
if (field == "All" || nameof(AnotherString2) == field)
{
err += StringLenthRule(AnotherString2, nameof(AnotherString2), 30, 20);
}
return err;
}
}
private string StringLenthRule(string str, string prop,int max, int min)
{
string err = "";
if (str.Length > max)
err += $"{prop} > {max}\n";
if (str.Length < min)
err += $"{prop} < {min}\n";
return err;
}
}
dann würden Sie
MyClass node = new MyClass(xmlNode);
if(node.IsValid)
{
//use class
}
else
{
display(node.Error)
}
tun Klingt wie ein Job für AOP ... –
Klingt wie ein [XY-Problem] (http://xyproduk.info/) –
Sie müssen entscheiden, welche Aktion ausgeführt werden soll, wenn ich versuche, eine * längere * Zeichenfolge zu setzen. Soll es eine Ausnahme sein? Soll die Saite getrimmt werden? Etwas anderes? –