mydoc应该是object类型,无法直接写mydoc.mydb_closemydb()这种是通过反射实现后期绑定,不需要先引用特定的类库
  
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/

解决方案 »

  1.   

    "不需要先引用特定的类库" 
    是不是我可以理解成不用加Using *******那些命名空间了,也不用引用相应的DLL了?
      

  2.   

    "不需要先引用特定的类库" 
    是不是我可以理解成不用加Using *******那些命名空间了,也不用引用相应的DLL了?
      

  3.   

    "不需要先引用特定的类库"
    是不是我可以理解成不用加Using *******那些命名空间了,也不用引用相应的DLL了?后半句理解补充一下,
    相应的DLL必须要加载,不管通过反射还是引用。
    否则的话,你让程序去哪儿找你的类啊?
      

  4.   

    “相应的DLL必须要加载,不管通过反射还是引用。”
    你的意思是只是不用Using *******那些命名空间了?
      

  5.   

    System.Type type = null; 
    type.InvokeMember("mydb_closemydb", BindingFlags.Default | BindingFlags.InvokeMethod, null, mydoc, null); 这是反射常用方法。
    为什么要这么用?你得先了解什么是反射,什么是多态,多态的方法怎么用,什么是工厂模式。这几个问题很难一下给你讲清楚。自己多看看书,多做些项目,自然就清楚了。建议在GOOGLE 上搜索 “设计模式 反射”
      

  6.   

    object mydoc = currentAssembly.CreateInstance("类型")
    mydoc一般是这样赋值的,因为"类型"不确定,但是能确定有mydb_closemydb这个属性.
      

  7.   

    现在我的程序是这样写的
    System.Type type = null;
    wfmic.mydocbaseClass mydoc = new mydocbaseClass();
    type = Type.GetType("wfmic.mydocbaseClass");
    //下面这句报了未将对象引用设置到对象的实例
    type.InvokeMember("freecom", BindingFlags.Default | BindingFlags.InvokeMethod, null, mydoc, null);经检查type仍旧为null,这是为什么呢??我直接用mydoc 的方法就没有问题。
      

  8.   

    wfmic.mydocbaseClass是fullname吗前面还有namespace吧
      

  9.   

    我又试了一下,我把type = Type.GetType("wfmic.mydocbaseClass");换成了type =  typeof(wfmic.mydocbaseClass);
    程序运行通过。搞不懂了。
      

  10.   

    使用反射动态调用类成员,需要Type类的一个方法:InvokeMember
    A  a=new A();
             Type type =love.GetType();
               Object obj =type.InvokeMember(null,
                BindingFlags.DeclaredOnly |
                BindingFlags.Public | BindingFlags.NonPublic |
                  BindingFlags.Instance | BindingFlags.CreateInstance,null,null, args);          type.InvokeMember("Display",BindingFlags.InvokeMethod | BindingFlags.Public| BindingFlags.Instance ,null , obj ,newobject[]{""});
    InvokeMember("",   // 接口函数名
    参考