mydoc应该是object类型,无法直接写mydoc.mydb_closemydb()这种是通过反射实现后期绑定,不需要先引用特定的类库
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
是不是我可以理解成不用加Using *******那些命名空间了,也不用引用相应的DLL了?
是不是我可以理解成不用加Using *******那些命名空间了,也不用引用相应的DLL了?
是不是我可以理解成不用加Using *******那些命名空间了,也不用引用相应的DLL了?后半句理解补充一下,
相应的DLL必须要加载,不管通过反射还是引用。
否则的话,你让程序去哪儿找你的类啊?
你的意思是只是不用Using *******那些命名空间了?
type.InvokeMember("mydb_closemydb", BindingFlags.Default | BindingFlags.InvokeMethod, null, mydoc, null); 这是反射常用方法。
为什么要这么用?你得先了解什么是反射,什么是多态,多态的方法怎么用,什么是工厂模式。这几个问题很难一下给你讲清楚。自己多看看书,多做些项目,自然就清楚了。建议在GOOGLE 上搜索 “设计模式 反射”
mydoc一般是这样赋值的,因为"类型"不确定,但是能确定有mydb_closemydb这个属性.
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 的方法就没有问题。
程序运行通过。搞不懂了。
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("", // 接口函数名
参考