2010-10-17 2 views
5

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

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

UPDATE

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

ответ

1

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

DependentEditorTabViewModel : DependencyObject 

TabViewModel : DependentEditorTabViewModel 
+0

Я думаю, что я сделал аналогичную ошибку ... кроме «DependencyObject», мне все равно нужно расширить «ObservableObject». Другими словами, мне нужен результирующий класс для расширения в основном 'DependencyObject',' ObservableObject'. –

+0

Хорошо. К сожалению, C# не поддерживает множественное наследование. Посмотрите на реализацию интерфейса. –

2

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

Даже если у вас нет возможности использовать интерфейсы (возможно, у вас нет доступа к коду), обычно лучше prefer composition over inheritance. Вам действительно нужно inherit оба эти класса, или вы можете составить с ними вместо этого?

+0

В моем вышеприведенном сценарии, как я мог реализовать состав над наследованием? Я читал об этом b4, но в этом случае, может быть, мой ум плохо работает :) –

+0

@jiewmeng: Боюсь, я ничего не знаю о базе MVVM Foundation, поэтому я не могу помочь с деталями. Сожалею. –

Смежные вопросы