2010-10-17 14 views
5

Angenommen, ich habe ein ViewModel TabViewModel, das ObservableObject die Klasse für ViewModels im MVVM Foundation Framework erweitert. Dann habe ich auch eine EditorTabViewModel, die TabViewModel erweitert, jetzt muss ich DependencyObject erweitern, um DependencyProperties zu implementieren. Ich kann nicht mehr als 1 Klasse verlängern. Wie kann ich das umsetzen? Ich könnte eine "Zwischenklasse" haben wie ...C#: Erweitern von mehr als 1 Klasse

aber das ist 1 extra unnötige Klasse. Gibt es einen besseren Weg dies zu tun?

UPDATE

Ops wirklich kippe ich die oben tun. DependentEditorTabViewModel EditorTabViewModel muss noch erweitert werden ... abgesehen von DependencyObject

Antwort

1

Es ist keine zusätzliche Klasse, wenn Sie erreichen, was Sie brauchen. Gehen Sie folgendermaßen vor:

DependentEditorTabViewModel : DependencyObject 

TabViewModel : DependentEditorTabViewModel 
+0

Ich glaube, ich habe einen ähnlichen Fehler gemacht ... abgesehen von 'DependencyObject' muss ich noch 'ObservableObject' erweitern. Mit anderen Worten, ich brauche die resultierende Klasse, um hauptsächlich 'DependencyObject',' ObservableObject' zu erweitern. –

+0

Ok. Leider unterstützt C# keine Mehrfachvererbung. Suchen Sie stattdessen nach einer Schnittstelle. –

2

C# unterstützt nicht Multiple Inheritance. Am besten verwenden Sie Interfaces und keine übergeordneten Klassen.

Auch wenn Sie nicht die Möglichkeit haben, Schnittstellen zu verwenden (vielleicht haben Sie keinen Zugriff auf den Code), ist es normalerweise besser, prefer composition over inheritance. Müssen Sie wirklich erben diese beiden Klassen, oder können Sie mit ihnen stattdessen komponieren?

+0

Wie konnte ich in meinem obigen Szenario die Komposition über die Vererbung implementieren? Ich lese über das b4 aber in diesem Fall, vielleicht funktioniert mein Verstand nicht gut :) –

+0

@jiewmeng: Ich fürchte, ich weiß nichts über das MVVM Foundation Framework, so kann ich nicht mit den Details helfen. Es tut uns leid. –