【发布时间】:2012-03-11 12:09:54
【问题描述】:
我有一个应用程序,我在其中使用 MEF 进行合成和 DI 的统一。 在某些时候,我有一个组件使用 MEF 为服务加载许多提供程序。 有些提供者应该使用 Unity 实例化,因为它们需要在实例化时接收附加组件。
Unity 需要创建的提供者具有向容器注册的依赖类型/接口。
但是当根组件通过 MEF 组合时(并且列表中填充了所有由 MEF 注册的导出组件),需要使用 Unity 构建的组件不会注入其依赖项。
我的代码是
public class LoggerManager
{
[ImportMany(typeof(ILogger))]
private List<ILogger> _loggers { get; set; }
}
记录器是
[Export(typeof(ILogger))]
public class WinEventLog : EventLog, ILogger
{
private IWinLoggerConfigurator _config = null;
public WinEventLog(IWinLoggerConfigurator config)
{
_config=config;
}
}
在我的主要代码中,在尝试编写 LogManager 之前
UnityHelper.Container.RegisterType<IWinLoggerConfigurator , MyWinLoggerConfigurator>();
如何做到这一点?
谢谢
【问题讨论】:
标签: unity-container mef