通常基于xml配置文件创建一个类使用反射机制:string _class = xnf1[0].InnerText;
string _file = xnf1[1].InnerText;Assembly ass = Assembly.LoadFrom(_file);
Type _Asstype = ass.GetType(_class);
_class instance = Activator.CreateInstance(_Asstype) as _class;
很显然,最后一句是行不通的,因为这里需要的是类类型。如果不硬编码,而自动创建(XML中有很多这种类),该如何实现那???
盼高手指点一二!

解决方案 »

  1.   

    _class   instance   =   Activator.CreateInstance(_Asstype)   as   _class; 
    这一句是错的,因为_class在这里是string 而不是class。
      

  2.   

    instance 只能设置成object类型,你可以再通过反射,可以运用这个类的方法和属性。
    不可能用_class   instance   创造的,
    除非你知道这个类可以强制转换 
    object instance   =   Activator.CreateInstance(_Asstype); 
    classname _class = (classname)instance
    此处的classname是一个类
      

  3.   

    参考一下反射http://www.cnblogs.com/fineboy/archive/2006/10/10/525348.html
      

  4.   

    Type.GetType的参数是一个AssemblyQualifiedName,比如ListBox的
    "System.Windows.Forms.ListBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
      

  5.   

    kuya??你说的:只能设置成object类型,你可以再通过反射,可以运用这个类的方法和属性。
    这个怎么实现??能不能给一点实例??
    lovefootball
    你的链接我看了,但是你好像没有明白我的意思:
      

  6.   

    看到你的消息了,不过我这的即时消息用不了。在这给你回复吧。
    如果你知道这个类里有个方法Func(string s),一个参数string
    那么你可以用
    设置参数
    System.Type[] paramTypes = new System.Type[1]; 
    paramTypes[0] = System.Type.GetType("System.String");  
    System.Reflection.MethodInfo mi = t.GetMethod("Func", paramTypes); 
    设置值
    //参数值 
    Object[] parameters = new Object[1]; 
    parameters[0] = "abc";  
    Object returnValue = mi.Invoke(instance, parameters); //instance是你上面得到的类的实例有关一个类里有什么方法和这个方法需要什么参数,也可以用反射得到。你可以从MSDN中查找一下或从网上查找一下吧。
      

  7.   

    lovefootball 
    你的链接我看了,但是你好像没有明白我的意思:
    ------->
    貌似是你没理解反射的概念~~~~~~~~
      

  8.   

    通过反射调用该类以及类的方法那个链接已经写的很清楚了
    通过链接的例子你还可以查找MSDN可以知道调用属性或者字段的方法不知道你还想干什么~~~~~~~~
      

  9.   

    反射只是把字符串当索引去找到一个类的定义,不代表这个类不需要声明,也就是说_class一定要定义成class才可以。