是否可以通过编程方式创建类的实例?
例如,我需要以编程方式创建10-20个表单
所以我会这样做:
Form graphs = new Form1(dateStart.Value.ToShortDateString(), dateEnd.Value.ToShortDateString(),cbQCValues.Text,cbAnalytes.Text,cbInstruments.Text);
然而构造函数每次都会不同,所以我需要把它放在for循环中
所以我需要多次运行上面的代码。例如10-20次。我需要有表单类graph1,graphs2,graphs3 ...
这可能吗?
答案 0 :(得分:4)
不确定我是否理解正确但你是否在此之后?
List<Form1> forms = new List<Form1>();
for(int i=0;i<20;i++)
{
forms.Add(new Form1(, ......))
}
答案 1 :(得分:4)
我建议您研究工厂设计模式。有很多选择,取决于你想要达到的目标。
答案 2 :(得分:1)
你可以在运行时发出新的类,但我怀疑你在这里提出错误的问题。如果您只需要向表单添加随机控件,只需创建一个新的Form对象并添加这些控件。如果确实需要在运行时创建新类,请查看System.Reflection.Emit命名空间。
如果你认为这是一个模糊的答案,你应该考虑写一个不太模糊的问题。 ;)
答案 3 :(得分:0)
使用框架提供的Activator类:
public T CreateInstance<T>() where T: new() {
return (T)Activator.CreateInstane(Assembly.GetEntryAssembly().CodeBase,
typeof(SomeType).FullName)
}