Ich stehe vor dem Problem, eine Eigenschaft zu validieren, deren Validierungseigenschaften mit dem entsprechenden Feldnamen verknüpft sind.C# Abrufen des Feldnamens von der Eigenschaft
int _myIntField;
public int MyIntField {
get { return _myIntField; }
set { _myIntField = value; }
}
Wenn nun ein Binding
Objekt Validierung, habe ich Zugriff auf die BindingField
, die den Namen der Eigenschaft zurückgibt MyIntField
, nicht den Feldnamen _myIntField
.
Ist es irgendwie möglich, _myIntField
für die Eigenschaft abzurufen? Wenn das so ist, wie?
Nun, wenn Sie Namenskonvention fest ist, könnten Sie einfach eine auf den ersten Buchstaben ersetzen ... 'string name = "_" + Char.ToLowerInvariant (Eingang [0]) + input.Substring (1); ' – musefan
Sie könnten Roslyn darauf gehen. Betrachten Sie für eine werkseitige Vorgehensweise Folgendes: 'int Foo {get {return _bar * _baz> 0? _pete: _barney; }} '. Was ist das Feld für 'Foo'? Sie können entscheiden, Code zu schreiben, der die eine oder andere Annahme zu dieser Frage macht, aber das .NET-Framework kann keine Annahmen treffen, die für alle sinnvoll oder nützlich sind. –
Mögliches Duplikat von [Wie bekomme ich das Getter-Backing-Feld von PropertyInfo?] (Http://stackoverflow.com/questions/38490739/how-to-get-getter-backing-field-from-propertyinfo) – thehennyy