我正在研究MEF,但我无法解决问题。
我有一个名为MainMEF的主应用程序和一个名为SimpleModule的简单模块。这个包含一个动态加载的UserControl。
当MainMEF启动时,我可以向模块传递对MainMEF中包含的主应用程序的引用。
我该如何解决这个问题?
答案 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);