【问题标题】:C#: Extending from more than 1 classC#:从超过 1 个类扩展
【发布时间】:2010-10-17 02:12:35
【问题描述】:

假设我有一个 ViewModel TabViewModel,它扩展了 MVVM 基础框架中 ViewModels 的类 ObservableObject。然后我还有一个扩展TabViewModelEditorTabViewModel,现在我需要扩展DependencyObject来实现DependencyProperties。我不能扩展超过 1 个类。我该如何实现呢?我可以有一个“中级”类......

TabViewModel : ObservableObject

EditorTabViewModel : TabViewModel

DependentEditorTabViewModel : DependencyObject

但那是 1 个额外的不必要的课程。有更好的方法吗?

更新

Ops 实际上我无法做到以上。 DependentEditorTabViewModel 还需要扩展 EditorTabViewModel ... 除了DependencyObject

【问题讨论】:

    标签: c# wpf mvvm dependency-properties mvvm-foundation


    【解决方案1】:

    C# 不支持Multiple Inheritance。最好的选择是使用接口,而不是父类。

    即使您没有使用接口的选项(也许您无权访问代码),通常最好还是使用prefer composition over inheritance。您真的需要继承这两个类,还是可以compose它们?

    【讨论】:

    • 在我上面的场景中,如何实现组合而不是继承?我读到了那个 b4,但在这种情况下,也许我的脑子不太好:)
    • @jiewmeng:恐怕我对MVVM Foundation Framework一无所知,所以我无法提供详细信息。对不起。
    【解决方案2】:

    如果您要完成所需的工作,这不是额外的课程。以下是您的处理方式:

    DependentEditorTabViewModel : DependencyObject
    
    TabViewModel : DependentEditorTabViewModel
    

    【讨论】:

    • 我想我犯了类似的错误......除了DependencyObject,我还需要扩展ObservableObject。换句话说,我需要生成的类主要扩展DependencyObjectObservableObject
    • 好的。不幸的是,c# 不支持多重继承。考虑实现一个接口。
    猜你喜欢
    • 2011-01-01
    • 1970-01-01
    • 2016-04-15
    • 2011-05-14
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 2021-05-06
    • 2014-11-03
    相关资源
    最近更新 更多