例如:
string strClassName = "myClass";
我能不能通过strClassName 这个变量,声明一个myClass类型的对象
类似 myClass a = new myClass();,只是类型名myClass 存储在字符串中。这个应该怎么做? 

解决方案 »

  1.   

    你可以通过反射来完成,例如:
    Type typObject = Type.GetType( "myClass" );
    object = typObject.InvokeMember(null, 
                BindingFlags.DeclaredOnly | 
                BindingFlags.Public | BindingFlags.NonPublic | 
                BindingFlags.Instance | BindingFlags.CreateInstance, null, null, null);
      

  2.   

    谢谢,
    Type typObject = Type.GetType( "myClass" );
    object = typObject.InvokeMember(null,
    BindingFlags.DeclaredOnly |
    BindingFlags.Public | BindingFlags.NonPublic |
    BindingFlags.Instance | BindingFlags.CreateInstance, null, null, null);
    Top是不是这个object就是我要的myClass,可是我在使用myClass中的方法时,我总要把object转换成myClass,这时候我如何获得这个类型的名字呢?
      

  3.   

    to 是不是这个object就是我要的myClass,可是我在使用myClass中的方法时,我总要把object转换成myClass,这时候我如何获得这个类型的名字呢?动态创建后,使用起来就比较麻烦了,不能像静态那样随意。方法一
    自己做switch转换,其缺点不灵活。方法二
    把所有操作抽象出来,用抽象类或者接口来实现,那么把产生的object转化成抽象类或者接口对象进行操作。
      

  4.   

    to:
    方法一
    自己做switch转换,其缺点不灵活。方法二
    把所有操作抽象出来,用抽象类或者接口来实现,那么把产生的object转化成抽象类或者接口对象进行操作。我觉得方法二可行,我试试,可是Type typObject = Type.GetType( "myClass" );我得到的typObject 总是NULL,可是myClass确实存在,直接实例化OK,是不是还有什么要做的,谢谢
      

  5.   

    Type typObject = Type.GetType( "namespace.myClass" );//Add its namespace
      

  6.   

    to Knight94(愚翁)OK了,再次感谢。