我有一个应用程序,我使用MEF进行DI的组合和统一。 在某些时候,我有一个使用MEF加载许多服务提供商的组件。 有些提供者应该使用Unity进行实例化,因为他们需要在实例化时接收add'l组件。
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>();
如何实现这一目标?
谢谢
答案 0 :(得分:1)
您还应该查看此MEFContrib项目 - http://mefcontrib.codeplex.com/wikipage?title=Unity%20Integration
答案 1 :(得分:0)
我找到了以下帖子,描述了这种情况,并找到了解决方案。
http://pwlodek.blogspot.com/2009/05/unity-mef-integration-layer.html