MEF和Unity集成

时间:2012-03-11 12:09:54

标签: unity-container mef

我有一个应用程序,我使用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>();

如何实现这一目标?

谢谢

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我找到了以下帖子,描述了这种情况,并找到了解决方案。

http://pwlodek.blogspot.com/2009/05/unity-mef-integration-layer.html