反射取得实例问题 有一个类库,对外只暴露了一个接口,而不知道实现这个接口的类的名字。在引用这个类库后,通过反射能不能取得实现了这个接口的类的实例,也就是我要调用这个类实现的接口方法。高手指个路呀! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个完全可以的...Assembly _Assembly= Assembly.LoadFile("@C:\1.DLL"); //先获取程序集合Type[] _TypeList=Assembly.LoadFile("@C:\1.DLL").GetTypes(); //获取所有类判断哪个是你需要的用System.Activator.CreateInstance(_TypeList[0]); 创建实例 参考,判断某个类是否实现了某个接口 Type t = typeof(某个类); if (Array.IndexOf(t.GetInterfaces(), typeof(某个接口)) > -1) { //实现了 } 哎~ 说什么好呢?msdn上照抄就行的事,还来这里问。 可以 System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFrom(dllPath); //获得类型 Type type = assembly.GetType(String.Format("{0}.{1}", NameSpacePath, className), false, true); //设置筛选标志 System.Reflection.BindingFlags bflags = System.Reflection.BindingFlags.DeclaredOnly | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance; //调用构造函数并获得对象 Object obj = type.InvokeMember(className, bflags | System.Reflection.BindingFlags.CreateInstance, null, null, null);参考参考 程序中使用UDP无法退出的问题 c# 创建资源文件问题 winform中,label有什么用(~~~) 问个关于打开Access的Report,并打印的问题 怎么把4个字符转换为2个字节的十六进制数?如 '0', '1', 'C', '2' 转换为 0x01C2 保存信息时,异步发邮件,可行吗? c#关于指针 一个小问题,在线等,请大家来指点一下 如何用DataGrid做成绩录入,用DataGrid里面的模板列,可是不知道怎么把成绩传到数据库里 "Namespace 名字空间" 是什么意思 ? 通俗点的 。 关于FCK编辑器 在有框架时候的问题100分 将单房间的聊天室改成可建房间的
Assembly _Assembly= Assembly.LoadFile("@C:\1.DLL"); //先获取程序集合Type[] _TypeList=Assembly.LoadFile("@C:\1.DLL").GetTypes(); //获取所有类判断哪个是你需要的用System.Activator.CreateInstance(_TypeList[0]); 创建实例
参考,判断某个类是否实现了某个接口 Type t = typeof(某个类);
if (Array.IndexOf(t.GetInterfaces(), typeof(某个接口)) > -1)
{
//实现了
}
msdn上照抄就行的事,还来这里问。
System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFrom(dllPath);
//获得类型
Type type = assembly.GetType(String.Format("{0}.{1}", NameSpacePath, className), false, true);
//设置筛选标志
System.Reflection.BindingFlags bflags = System.Reflection.BindingFlags.DeclaredOnly | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance;
//调用构造函数并获得对象
Object obj = type.InvokeMember(className, bflags | System.Reflection.BindingFlags.CreateInstance, null, null, null);
参考
参考