Ich entwickle ein WPF mit MVVM-Muster, .NET Framework 4.6.1. und C#.Zusammensetzung statt Vererbung
Meine Frage ist nicht über WPF, ist es über die Verwendung von Zusammensetzung anstelle der Vererbung mit diesen beiden Klassen:
public class ObservableObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChangedEvent(string propertyName)
{
var handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
Und:
public class MainViewModel : ObservableObject
{
private string statusPrinter;
public string StatusPrinter
{
get { return statusPrinter; }
set
{
statusPrinter = value;
RaisePropertyChangedEvent("StatusPrinter");
}
}
}
MainViewModel
Vererbung von ObservableObject
und ich will nicht Vererbung verwenden.
Ich kann dies tun:
public class MainViewModel
{
private string statusPrinter;
private ObservableObject observable;
public string StatusPrinter
{
get { return statusPrinter; }
set
{
statusPrinter = value;
observable.RaisePropertyChangedEvent("StatusPrinter");
}
}
public MainViewModel()
{
observable = new ObservableObject();
}
}
Aber es scheint ein Problem mit public event PropertyChangedEventHandler PropertyChanged;
in ObservableObject
zu sein, wenn ich Zusammensetzung verwenden. Das Problem ist, wenn XAML-Link.
Kann ich Komposition hier verwenden oder muss ich Vererbung verwenden?
Es ist eine sehr seltsame Anforderung. Warum willst du hier keine Erbschaft? – Dennis
@Dennis Ich lese das Buch 'Microsoft .NET: Architecting-Anwendungen für das Unternehmen, Second Edition' und es geht darum, Vererbung zu vermeiden. – VansFannel
Ersetzen Sie für Ihre zukünftige Vernunft diese hartcodierten Strings durch 'nameof' Anweisungen! Sie müssen sicherlich in Ordnung C# 6 verwenden, wenn Sie auf .NET 4.6.1 zielen. – TheInnerLight