Ich versuche herauszufinden, wie Eigenschaften durch mehrere Klassen richtig übergeben werden. Ich weiß, dass ich einfach INotifyPropertyChanged
in jeder Klasse implementieren und auf Änderungen in der Eigenschaft warten kann, aber das scheint ziemlich viel unnötigen Code zu sein.
Die Situation:
Ich habe eine Klasse (nennen wir es Class1
) mit zwei Abhängigkeitseigenschaften: FilterStatement
(String) und Filter
(Filterklasse). Das Setzen der Anweisung beeinflusst den Filter und umgekehrt.
Die Konvertierungslogik zwischen Anweisung und Filter befindet sich jedoch nicht in Class1
, sondern in Class3
- was Class1
nicht direkt weiß. Dazwischen liegt Class2
, das die Änderungen nur passieren muss. (Sie können sich vorstellen, dass Klasse 1 bis 3 Viewmodel, Model und Repository ist, obwohl dies in der realen Situation nicht vollständig übereinstimmt).
Meine naive Lösung wäre, die Eigenschaften über alle drei Klassen hinweg zu duplizieren, INotifyPropertyChanged
in Class2
und Class3
zu implementieren und die Änderungen anzuhören, alles bis Class3
und in Result bis% co_de weiterzugeben %. Gibt es dafür keine bessere Lösung?
Tatsächlich, während Class1
kein Steuerelement ist (da es ein ViewModel ist), sehe ich keinen Grund, seine Eigenschaften als DependencyProperty
zu definieren, weil die Implementierung von INotifyPropertyChanged
ausreichen sollte.
Die Implementierung mit DependencyProperty
sollte jedoch ebenfalls funktionieren:
Bitte beachten Sie, dass Filter.Equals
korrekt implementiert werden sollte und die Konvertierungsmethoden von Class3
die gleichen Werte für gleiche Argumente zurückgeben sollten.
Ich denke, du verkomplizierst das zu sehr. Beobachtbares Muster passt besser zur Implementierung der Benutzerschnittstelle. Warum codierst du nicht in Class3
logic, die alle Eigenschaften in Class1
setzt? I thnik, dass Overload Setter FilterStatment
und Filter
in Class1
, was ViewModel ist auch eine gute Lösung. Einfachere Lösung als besser.
Tags und Links c# properties