Beste Weg, um notify-Eigenschaft ändern, wenn das Feld in Abhängigkeit von einem anderen

Was ist der beste Weg, in c# zu Benachrichtigen Eigenschaft geändert auf ein Element, das Feld ohne set aber get abhängig von anderen Feldern ?

Beispiel :

public class Example : INotifyPropertyChanged
{
    private MyClass _item;
    public event PropertyChangedEventHandler PropertyChanged;

    public MyClass Item
    {
        get
        {
            return _item;
        }
        protected set
        {
            _item = value;
            OnPropertyChanged("Item");
        }
    }

    public object Field
    {
        get
        {
            return _item.Field;
        }
    }
#if !C#6
    protected void OnPropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;

        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
#else
    protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        //=> can be called in a set like this: 
        //public MyClass Item { set { _item = value; OnPropertyChanged();} }
        //OnPropertyChanged will be raised for "Item"
    }
#endif
}

Was der beste Weg, um den Aufstieg PropertyChanged für "Field" bei der Einstellung Item ? Ich wollte rufenOnPropertyChanged("Field"); bei der Einstellung Item aber wenn ich hatte viele Felder der code wird schnell hässlich und wartbaren.

Edit:

Ich Frage mich, ob es eine Funktion/Methode/Attribut funktioniert dies so :

[DependOn(Item)]
public object Field
{
    get
    {
        return _item.Field;
    }
}

=> Wenn Item änderungen, die alle die je Felder teilt die Eigenschaft geändert hat.

Gibt es die ?

du implementieren könntest INotify für MyClass
Field im MyClass nicht ändern, dass die Instanz _item, die durch ein anderes ersetzt wird. In meinem Fall MyClass enthält einen xml-text. Ich mache einen webRequest um eine neue Instanz von MyClass und ich speichern Sie es auf _item. _item.Field können nicht notify-Eigenschaft geändert, weil Field ist nur eine erhalten, die zum Parsen der xml-Datei.

InformationsquelleAutor A.Pissicat | 2016-08-11

Schreibe einen Kommentar