Mef,将参数传递给模块

时间:2010-06-03 12:45:04

标签: silverlight-4.0 mef

我正在研究MEF,但我无法解决问题。

我有一个名为MainMEF的主应用程序和一个名为SimpleModule的简单模块。这个包含一个动态加载的UserControl。

当MainMEF启动时,我可以向模块传递对MainMEF中包含的主应用程序的引用。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

已经有很多关于这方面的问题。 您可以在使用属性初始化后传递它: How do I populate a MEF plugin with data that is not hard coded into the assembly?

或者使用MEF构造函数参数: MEF Constructor Parameters with Multiple Constructors

导出看起来像这样:

[Export(typeof(ITest))]
class Test : ITest 
{
    void Test() 
    {  }

    [ImportingConstructor] //<- This is the key bit here
    void Test(object parameter) 
    {  }
}

然后在编写目录时执行以下操作:

catalog.ComposeExportedValue( /* parameter here */);
catalog.ComposeParts(this);