1


0

派生コントロールを作成する

私は `UserControl`を継承した抽象基底クラスを持っていて、それを使っていくつかのクラスを派生させています。

私が抱えている問題は、生成された関数 `InitializeComponent()`がクラスの各層に対して確実に呼び出される方法です。

つまり、(抽象)基本クラスには、すべての子に共有されることになる多数のコントロールがあります。 子クラスのインスタンスを作成するとき、最初に基本コンストラクタが呼び出されますが、派生クラスごとに同じコンストラクタを効果的に構築することなく派生した `InitializeComponent()`をエレガントに呼び出す方法はあります。

public DerivedClass() {
  InitializeComponent();
}

各派生クラスで自分自身を繰り返すよりも効率的な方法があるかどうか私は思っていますか?

実際には、(抽象)基本クラスを呼び出せるようにしたいのですが。

Derived.InitializeComponent();

結局のところ、それが(デバッグ中に)ベースコンストラクタの中にあるとき、それはそれが派生インスタンスであることを知っています…​

2 Answer


1


public DerivedClass():base()\ {}

これはあなたのベースコンストラクタを呼ぶでしょう、InitializeComponentsを呼び出す必要があるなら、通常は物事を行うための魔法のような方法はありません、あなたはおそらくそれをあなた自身で呼ばなければならないでしょう。


0


InitializeComponentを仮想化し、すべてのサブクラスでそれをオーバーライドする場合、派生コンストラクタから基本コンストラクタを呼び出すと、基本クラスは各サブクラスの正しいメソッドを呼び出します。