我想创建一个类列表,从中可以在我的表单中构建一个“工具箱”。它归结为一个可能的小部件列表,我可以将它们拖放到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
,但感觉有点矫枉过正。做这样的事情的最好方法是什么?甚至可以不实例化类吗?