2016-11-11 52 views
4

我有一個抽象基控制BaseControl爲此我分辨的使用the following post子形式的非顯示。多個抽象形式繼承

現在,我有很多的控制分擔,我想創建一箇中間抽象類重新組合不同的公共屬性,並迫使所有後代執行一些其他的性能有一定的公共屬性。

[TypeDescriptionProvider(typeof(AbstractControlDescriptionProvider<BaseControl, UserControl>))] 
public abstract partial class BaseControl : UserControl { 
    ... 
    ... 
    ... 
} 
[TypeDescriptionProvider(typeof(AbstractControlDescriptionProvider<BaseControl2, BaseControl>))] 
public abstract partial class BaseControl2 : BaseControl { 
    ... 
    ... 
    ... 
} 

不幸的是,這是不行的,設計師抱怨不能夠創建抽象類BaseControl2的實例爲我的後代控制。

如何解決這個任何建議?

+1

我不明白你的問題。你不能簡單地創建一個派生自'BaseControl2'的類並實例化這個類? – HimBromBeere

+0

我不知道如果我理解你的問題,但你可能想看看[此帖](http://stackoverflow.com/questions/38262541/abstract-generic-usercontrol-inheritance-in-visual-工作室設計師)。 –

+0

你能詳細解釋一下嗎? –

回答

0

你需要認識到如何AbstractControlDescriptionProvider作品 - 如果類型是抽象的,它與非抽象基類來替換它。

你指定了一個抽象類型作爲非抽象基類型,所以顯然它不能工作:)

+0

是的,所以我試圖用'UserControl'而不是'BaseControl'取代,但它不工作,要麼... – neggenbe

+0

@neggenbe那麼,你就需要提供的代碼,一個完整的一塊,實際上顯示了你的問題以獲得真正的幫助,但請注意'AbstractControlDescriptionProvider'不會遍歷類型層次結構 - 它只處理一個可能的抽象類。而'TypeDescriptorProviderAttribute'是繼承的,所以在大多數情況下,你確實需要在整個層次結構中只有一個 - 設計者甚至不會看到第二個類型描述提供者。 – Luaan