我已经阅读了所有关于在没有导出包含类的情况下组合导入的问题的问题,但我找不到解决我的问题的方法。 有人知道如何实现我要做的事吗?
我的模块程序集具有内部使用的表单和类。 这些表单需要访问一些导出的合同,但是由于它们不在MEF“组合树”中,因此导入未加载。
主机程序集:
public class Host
{
public Host()
{ /* Compose parts here... */ }
[Export(typeof(Licence))]
public Licence LoadedLicence { get; set; }
[Export(typeof(IModule))]
public List<IModule> LoadedModules { get; set; }
}
模块组装:
[Export(typeof(IModule))]
public class Module : IModule
{
public Module() { }
public void DoSomething()
{
SubForm sub = new SubForm();
sub.ShowDialog();
}
[Import(typeof(Licence))]
public Licence LoadedLicence { get; set; } // This works here
}
public class SubForm : Form
{
public SubForm ()
{ }
[Import(typeof(Licence))]
public Licence LoadedLicence { get; set; } // This doesn't work in here
}
据我所见,我的选择有以下几种:
- 向构造函数传递参数(很麻烦)
- 在需要满足导入的类上使用虚拟导出?