当前位置: 首页 > 编程语言 > C#

Mono.Addins实现不检索插件Share

时间:2023-04-10 16:41:27 C#

Mono.Addins实现不检索插件我正在使用Mono.Addins框架、C#和visualstudio2010编写一个可扩展的应用程序。我的申请结构如下:PROJECT1:namespacePlugins{[TypeExtensionPoint]publicinterfaceIPlugin{voidRefresh();字符串插件名称{得到;}voidInitialize(InitParamsType参数);}[TypeExtensionPoint]publicinterfaceIOrganizerPlugin:IPlugin{boolAllowsToEditBrandCode{get;}用户控件GetUI();}publicinterfaceIPluginHost{voidEmbedPlugin(PluginSpecalizedTypeplugin);}}项目2(参考项目1):[assembly:AddinRoot("App.Organizer","1.0")]namespaceApp.Organizer{publicpartialclassfrm_Supplier_Managed:Form,IPluginHost{publicfrm_Supplier_Managed(){AddinManager.Initialize();AddinManager.Registry.Update(null);foreach(AddinManager中的IOrganizerPlugin插件。GetExtensionObjects(typeof(IOorganizerPlugin))){EmbedPlugin(插件);}}publicvoidEmbedPlugin(IOorganizerPluginplugin){//嵌入UI等。("App.Organizer","1.0")]命名空间App{[扩展]publicclassMainPlugIn:IOrganizerPlugin{publicvoidRefresh(){return;}publicstringPlugInName{get{return"";}}publicvoidInitialize(stringsupplierCode){}publicUserControlInterface{get{returnnull;}}publicboolAllowsToEditBrandCode{get{returntrue;}}publicUserControlGetUI(){返回空值;}}}问题是:在foreach语句中没有生成插件ps:所有.dll都在同一目录中编译。这里的问题是IOrganizerPlugin的扩展点定义在project1中,不是addin也不是addinroot。解决方案是在project2中添加此引用:[assembly:ImportAddinAssembly("project1.dll")]这样,project1将成为App.Organizer加载项根目录的一部分,并且project1.dll中的扩展点将被正确注册。不知道为什么或者是否有一些实现原因,但是将私有插件接口(IOOrganizerPlugin)移动到插件主机为我工作的同一个程序集中。以上是C#学习教程:Mono.Addin不获取插件共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢