Интеграция MEF и Unity - PullRequest
       32

Интеграция MEF и Unity

1 голос
/ 11 марта 2012

У меня есть приложение, где я использую 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>();

Как это можно сделать?

Спасибо

Ответы [ 2 ]

1 голос
/ 11 марта 2012

Вы также должны проверить этот проект MEFContrib - http://mefcontrib.codeplex.com/wikipage?title=Unity%20Integration

0 голосов
/ 11 марта 2012

Я нашел следующий пост, описывающий ситуацию и способ ее решения.

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

...