フォームに「ツールボックス」を作成できるクラスのリストを作成したいと考えています。要するに、ドラッグ アンド ドロップできるウィジェットのリストですPanel
。クラスは同じインターフェースを実装し、リストを作成するためのいくつかの静的メソッドを持ちます。
私が持っているいくつかのコード:
public interface IWidget {
Image image { get; }
}
public class Gauge : IWidget, PictureBox {
public static Image image {
get {
return Properties.Resources.gauge;
}
}
}
フォームに、次のような配列を配置したい:
IWidget[] supported_widgets = { Gauge };
インスタンス化するのではなく、クラスの静的メソッドを使用して、ユーザーが選択できるツールボックスを作成します ( にドロップするとインスタンス化されますPanel
)。
foreach (IWidget w in supported_widgets) {
PictureBox p = new PictureBox();
p.Image = w.getImage();
toolbox.Controls.Add(p);
}
で実験しましSystem.Type
たが、少しやり過ぎに感じます。このようなことをする最善の方法は何ですか? クラスをインスタンス化しなくても可能ですか?