【发布时间】:2010-06-07 20:00:00
【问题描述】:
我已经阅读了所有我能找到的关于在不导出包含类的情况下编写导入的问题,但我找不到解决我的问题的方法。有人知道实现我想要做的事情的方法吗?
我的模块程序集有它们在内部使用的表单和类。这些表单需要访问某些导出的合同,但由于它们不在 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
}
据我所知,我的选择是:
- 将参数传递给构造函数(痛苦)
- 对需要满足导入的类使用虚拟导出?
还有其他人吗?
【问题讨论】: