我的一个有插件的系统,Application里定义了IPlug接口:
interface IPlug{
....
}
然后再plugin.dll里面定义 SuperRender:
public class SuperRender : IPlug {
....
}然后在Application里面动态加载plugin.dll:1 Assembly ass=Assebly.LoadFrom("plugin.dll");
2 Type tp=ass.GetType("SuperRender");
3 ConstructorInfo ctor=tp.GetConstructor(Type.EmptyTypes);
4 object obj=ctor.Invoke(null);
5 IPlug plug=obj as IPlug;结果,在4处设断点,查看obj的类型,为"SuperRender",但执行完5后,plug=null!!
为什么会这样子?为什么?为什么!!!!
interface IPlug{
....
}
然后再plugin.dll里面定义 SuperRender:
public class SuperRender : IPlug {
....
}然后在Application里面动态加载plugin.dll:1 Assembly ass=Assebly.LoadFrom("plugin.dll");
2 Type tp=ass.GetType("SuperRender");
3 ConstructorInfo ctor=tp.GetConstructor(Type.EmptyTypes);
4 object obj=ctor.Invoke(null);
5 IPlug plug=obj as IPlug;结果,在4处设断点,查看obj的类型,为"SuperRender",但执行完5后,plug=null!!
为什么会这样子?为什么?为什么!!!!
解决方案 »
- toolStrip中的toolStripDropDownButton控件如何动态生成多层菜单
- 请问C#里有没有数学计算的库?
- 基类的构造函数的意义
- 怎样获取控件引用
- 进行connection连接超时判断的问题
- 小议 ADO和ADO.NET
- 如何将数据一个数据集按照指定的XML格式 输出成 XML?
- unity3d中c#的使用
- 【痛苦ing】用SqlCommandBuilder生成的命令中不含"select fields from table where (Id=@Id)",那如何刷新更新的数据集呢?
- 安装vs7.0的组件更新
- 求网址正则。。要求匹配http(s) ,匹配.com.net.cn.gov....匹配ip,端口,参数
- 如何选定richtextbox控件里的某一行,并使其变色?救急呀```````
如果这样不行,总有可行的办法吧?
即:我在Application里定义一接口,然后在PlugIn.dll里实现值,然后再在app里调用以实现插件机制,这种好像很多的呀。
如果这样不行,总有可行的办法吧?
即:我在Application里定义一接口,然后在PlugIn.dll里实现值,然后再在app里调用以实现插件机制,这种好像很多的呀。即使同一个文件而加载到不同的程序集,就属于不同的类型,因此无法直接进行类型转换。
唯一能进行处理的就是,通过反射来进行操作。
http://community.csdn.net/Expert/TopicView3.asp?id=5045116