我正在寫使用Mono.Addins框架,C#和Visual Studio 2010Mono.Addin實現不檢索加載項
我的應用程序的結構,可伸展的應用程序如下:
PROJECT1:
namespace Plugins
{
[TypeExtensionPoint]
public interface IPlugin<InitParamsType>
{
void Refresh();
string PlugInName { get; }
void Initialize(InitParamsType parameters);
}
[TypeExtensionPoint]
public interface IOrganizerPlugin : IPlugin<string>
{
bool AllowsToEditBrandCode { get; }
UserControl GetUI();
}
public interface IPluginHost<PluginSpecalizedType>
{
void EmbedPlugin(PluginSpecalizedType plugin);
}
}
項目2(參考文獻PROJECT1):
[assembly: AddinRoot("App.Organizer", "1.0")]
namespace App.Organizer
{
public partial class frm_Supplier_Managed : Form, IPluginHost<IOrganizerPlugin>
{
public frm_Supplier_Managed()
{
AddinManager.Initialize();
AddinManager.Registry.Update(null);
foreach (IOrganizerPlugin Addin in AddinManager.GetExtensionObjects(typeof(IOrganizerPlugin)))
{
EmbedPlugin(Addin);
}
}
public void EmbedPlugin(IOrganizerPlugin plugin)
{
//embedding UI and so on..
}
}
}
項目3在foreach語句無插件產生 :(引用項目1項):
[assembly: Addin("App.OrganizerPro", "1.0")]
[assembly: AddinDependency("App.Organizer", "1.0")]
namespace App
{
[Extension]
public class MainPlugIn : IOrganizerPlugin
{
public void Refresh()
{
return;
}
public string PlugInName
{
get { return ""; }
}
public void Initialize(string supplierCode)
{
}
public UserControl Interface
{
get { return null; }
}
public bool AllowsToEditBrandCode
{
get { return true; }
}
public UserControl GetUI()
{
return null;
}
}
}
問題。
p.s .:所有.dll編譯在同一個目錄下。
我現在不能嘗試,但今天下午我會做。但我也嘗試在Project1中放置 [assembly:AddinRoot(「App.Organizer」,「1.0」)] ,但它不起作用。這與您的解決方案是否完全相同? –
好吧,我已經嘗試過,它的工作原理,謝謝! –