在我的程序里面,我需要动态创建一个类的实例,一般的情况下都是这样做的
frmNewForm NewForm = new frmNewForm(),但是我现在想要实现的是,我从数据库里面读取一个字段,里面的值是字符串类型的"frmNewForm",我能够确定系统里面有这个类,能不能用代码只根据这个字符串找到系统里面的实际的类,然后创建一个实例呢,请高手指点,谢谢。

解决方案 »

  1.   

    赶紧找找关于反射(Reflection)方面的资料吧。
    用类名创建实例这种是反射里随便都能找到的例子。
    自己找~
      

  2.   

    Activator.CreateInstance("程序集名", "类名")
      

  3.   

    ObjectHandle obj = Activator.CreateInstance("ObjectHandleAssembly","MyType");
    MyType testObj = (MyType)obj.Unwrap();
      

  4.   

    但是楼上的MyType testObj = (MyType)obj.Unwrap();
     还是用到了MyType来进行类型的强制转换啊,然后创建实例啊,我想要的是就是只知道"MyForm"这个字符串,而且知道在系统里面有MyForm这个类,该类是一个窗体,我想根据"MyForm"创建一个该窗体的实例,并且Show出来。
      

  5.   

    Form form = (Form)obj.Unwrap();
    form.Show();
      

  6.   

    Assembly a1 = Assembly.GetEntryAssembly();
                Type t = a1.GetType("Gocean.FanClass");
                ConstructorInfo conn = t.GetConstructor(new Type[0]);            object a2 = conn.Invoke(new object[0]);            MethodInfo method = t.GetMethod("Say1", new Type[0]);
                method.Invoke(a2, new object[0]);