MEF RegistrationBuilder - экспорт составного ILog, который импортирует ILog[]
Я пытаюсь использовать класс, который является составным ( https://en.wikipedia.org/wiki/Composite_pattern) регистратором интерфейса ILog. Моя цель - экспортировать все регистраторы в приложении, которые реализуют интерфейс ILog, а затем импортировать их в конструктор составного регистратора. Тем не менее, в идеале мне нужно было бы иметь возможность экспортировать составной регистратор с использованием интерфейса ILog.
Я смог решить эту проблему, создав отдельный интерфейс для класса CompositeLogger, но это, в свою очередь, нарушает составной шаблон. Я не пытаюсь быть сторонником шаблонов, я просто предпочел бы не добавлять ненужные интерфейсы к решению, если это возможно.
public class CompositeLogger : ILog
{
public CompositeLogger(ILog[] loggers) {
// logic...
}
}
Я надеюсь, что это можно сделать с помощью MEF RegistrationBuilder. Пока что я пробовал:
conventions.ForTypesDerivedFrom<ILog>().Export<ILog>();
conventions.ForType<CompositeLogger>().SelectConstructor(ctor => new CompositeLogger(ctor.Import<ILog[]>())).Export<ILog>();
По отдельности эти регистрации работают, однако вместе они вызывают ошибку циклической композиции, которая имеет смысл.
Может быть, этот сценарий слишком сложен для RegistrationBuilder? Я надеюсь, что это не так, и ответ просто ускользает от меня.
Любая помощь или руководство с благодарностью! Спасибо за ваше время.