c#以编程方式创建类的实例

时间:2010-11-08 22:49:34

标签: c# .net winforms

是否可以通过编程方式创建类的实例?

例如,我需要以编程方式创建10-20个表单

所以我会这样做:

   Form graphs = new Form1(dateStart.Value.ToShortDateString(), dateEnd.Value.ToShortDateString(),cbQCValues.Text,cbAnalytes.Text,cbInstruments.Text);

然而构造函数每次都会不同,所以我需要把它放在for循环中

所以我需要多次运行上面的代码。例如10-20次。我需要有表单类graph1,graphs2,graphs3 ...

这可能吗?

4 个答案:

答案 0 :(得分:4)

不确定我是否理解正确但你是否在此之后?

List<Form1> forms = new List<Form1>();
for(int i=0;i<20;i++)
{
    forms.Add(new Form1(, ......))
}

答案 1 :(得分:4)

我建议您研究工厂设计模式。有很多选择,取决于你想要达到的目标。

您可能会觉得这很有用:http://www.dofactory.com/Patterns/Patterns.aspx

答案 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)

    }