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