簡體   English   中英

C#中的多重繼承問題

[英]Multiple inheritance problem in C#

我處於一種需要在WPF和C#中使用多重繼承的情況。

我正在做一個控件,可以說從組合框控件派生的Control-1。 我在控件Control-1類中添加了一些依賴項屬性和方法。 我的控件1中的大多數屬性和方法(實際上與屬性和方法的實現方式相同)也可以在另一個稱為控件2的控件中使用,但該控件不應從組合框控件中派生(就像Control- 1)。

我想在另一個類中分離公共依賴屬性和方法,但是在另一個類中分離它要求我從組合框控件和包含屬性和方法的公共類派生我的控件類(control-1)。

有沒有可以解決我的問題的設計。

注意:問題是關於使用WPF框架的依賴項屬性的C#,該屬性需要靜態成員,而不僅僅是一般的C#。

有關

如果不能選擇多重繼承,如何重用代碼?

C#中的多重繼承

如何在C#中實現類之間的共享行為(沒有課程的多重繼承)

.NET中的多個繼承有哪些好的替代方案?

一種可能適合您的解決方案是創建一個接口,並將您的實現放入擴展方法中。

我不能直接談到“依賴屬性”的情況,因此,如果有幫助,我將討論一般性問題。

您不能在C#中實現實現的多重繼承。 但是,您可以附加接口。

因此,您可以定義接口:

interface IWhatever
{
    ...
}

然后,您可以像這樣在一個類中實現該接口的功能:

class M : IWhatever
{
}

現在,您將選擇希望具有此附加功能的類:

class B : MustExtend, IWhatever
{
    private M myMImpl = new M();

   // implement functions, call to 'myMImpl' for implementation.
}

這稱為“組成”。 我認為它在某些情況下可能很有用,並且通常沒有得到充分利用:)

我使用了從派生類調用的存根,並將基本類型的類作為參數。 這給了我幾個單行功能。 太糟糕了。

擴展方法和接口的問題在於,依賴項屬性需要聲明靜態成員和公共屬性,例如:

    public PermissionEnum Permission
    {
        get { return (PermissionEnum)GetValue(PermissionProperty); }
        set { SetValue(PermissionProperty, value); }
    }

    public static readonly DependencyProperty PermissionProperty =
        DependencyProperty.Register("Permission", typeof(PermissionEnum), typeof(SecurityMenuItem), new FrameworkPropertyMetadata(PermissionEnum.DeliveryView));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM