I am writing an extensible application using the Mono.Addins framework, C # and visual studio 2010.
The structure of my application is as follows:
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); } }
project 2 (links 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) {
project 3 (draft references 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; } } }
The problem is this: in the foreach statement, no plugins are received.
ps: all .dlls are compiled in the same directory.
source share