2016-11-11 22 views
4

私はthe following postを使用して子フォームの非表示を解決した抽象基本コントロールBaseControlを持っています。複数抽象フォーム継承

ここでは、いくつかの共通プロパティを共有するコントロールがたくさんあります。中間的な抽象クラスを作成して、さまざまな共通プロパティを再編成し、すべての子孫が他のプロパティを実装するようにします。

[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

はい、私は 'BaseControl'の代わりに' UserControl'で置き換えようとしましたが、どちらもうまくいきませんでした... – neggenbe

+0

@neggenbeあなたは問題を実際に示す完全なコードを提供する必要があります本当の助けを得るために、 'AbstractControlDescriptionProvider'はタイプ階層を横断しないことに注意してください - それは1つの可能な抽象クラスを扱うだけです。 'TypeDescriptorProviderAttribute'は継承されているので、ほとんどの場合、階層全体に1つしかない必要があります。デザイナーは2番目の型記述プロバイダも見ていません。 – Luaan

関連する問題