MEF : probleme export fonction inter addin/plugin
[VS2010][.NET4][C#4][WPF4]
Bonjour,
j'utilise les MEF pour mon nouveau projet à base de plugin.
ce projet est composé de :
HOST : l'application (exe) qui va accueillir (afficher) le plugin (view) donc qui fait la composition egalement!!
PLUGIN_VIEW1 : plugin (dll) avec une view qui sera afficher dans HOST
PLUGIN_LOGGER : plugin (dll) sans vue , uniquement des fonctions uqui permettent de faire du log
plugin_logger : possède des fonctions de log, je souhaiterai exporter par exemple la fonction Log(string txt); à tous les autres plugins mais également à l'host
exemple
code du logger (logger.dll)
Code:
1 2 3 4 5 6 7 8 9 10 11
| namespace Module.Tools.Logger
{
[Export(typeof(ILogger))]
public class ConsoleLogger : ILogger
{
public void Log(string message)
{
Console.WriteLine(message);
}
}
} |
code du contrat (contract.dll)
Code:
1 2 3 4 5 6 7
| namespace Contract
{
public interface ILogger
{
void Log(string message);
}
} |
code l'host (host.exe)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
CompositionContainer container ;
public bool CheckLicences()
{
AggregateCatalog objCatalog = new AggregateCatalog();
AssemblyCatalog objAssembly = new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly());
objCatalog.Catalogs.Add(objAssembly);
objCatalog.Catalogs.Add(new DirectoryCatalog("Modules"));
container = new CompositionContainer(objCatalog);
container.ComposeParts(this);
// ICI LOGGER EST OK il n'est pas NULL
Logger.Log("click check box");
} |
code du plugin view (plugin_view.dll)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
public partial class PluginView : UserControl
{
[Import(typeof(ILogger))]
public ILogger Logger { get; set; }
public PluginView()
{
InitializeComponent();
// ici logger est null après la composition
Logger.Log("message test");
}
} |
comme vous le voyez précédemment lors de la composition Logger n'est pas null dans l'host mais il et null dans le plugin view.
apparemment l'import ne fonctionne que à l'endroit ou se trouve la composition c'est à dire dans l'host...
comment faire pour que la fonction Log soit propagé egalement au autres plugins qui sont composé..
Merci d'avance de votre aide
Aram