C #: расширение от более чем 1 класса - PullRequest
5 голосов
/ 17 октября 2010

Предположим, у меня есть ViewModel TabViewModel, который расширяет ObservableObject класс для ViewModels в MVVM Foundation Framework. Тогда у меня также есть EditorTabViewModel, который расширяет TabViewModel, теперь мне нужно расширить DependencyObject, чтобы реализовать свойства DependencyProperties. Я не могу продлить более 1 класса. Как я могу реализовать это? Я мог бы иметь "промежуточный" класс, как ...

TabViewModel : ObservableObject

EditorTabViewModel : TabViewModel

DependentEditorTabViewModel : DependencyObject

но это 1 лишний ненужный класс. Есть ли лучший способ сделать это?

UPDATE

Ops на самом деле я не могу сделать выше. DependentEditorTabViewModel все еще нужно расширить EditorTabViewModel ... помимо DependencyObject

Ответы [ 2 ]

2 голосов
/ 17 октября 2010

C # не поддерживает множественное наследование . Лучше всего использовать интерфейсы, а не родительские классы.

Даже если у вас нет возможности использовать интерфейсы (возможно, у вас нет доступа к коду), обычно предпочтительнее композиция вместо наследования . Вам действительно нужно наследовать оба этих класса, или вы можете сочинять вместо них?

1 голос
/ 17 октября 2010

Это не лишний класс, если вы выполняете то, что вам нужно.Вот как бы вы поступили:

DependentEditorTabViewModel : DependencyObject

TabViewModel : DependentEditorTabViewModel
...