Скажем, у меня есть 5 отдельных сборок со следующим (предположим, что имя класса отличается в каждой):
[Export(typeof(IService))]
public class Service: IService
{
// ...
}
И у меня есть класс, который будет составным из них в моей основной сборке.
public class CompositeService : IService
{
public CompositeService(IEnumerable<IService> services)
{
// ...
}
}
Я хотел бы, чтобы контейнер Unity разрешал CompositeService
для IService
и имел MefContrib для Unity, найдите 5 других экспортов и вставьте их в конструктор CompositeService
.
Проблема в том, что у вас не может быть N экземпляров для безымянного unityContainer.RegisterType<IService>
и не может быть для именованных экземпляров, если все они имеют одно и то же имя.
Я думаю, что мне не хватает чего-то простого в сочетании двух технологий (Unity + MEF) через третью (MefContrib), но я не могу понять, что это такое.
Возможно ли это или есть обходной путь? В конце концов, я перейду к полному двунаправленному внедрению зависимостей и динамическому обнаружению компонентов.
IEnumerable
из них. Я могу сделать с нимиcontainer.RegisterInstance<T>
, но им всем потребуются разные имена. Я играю сcontainer.ResolveAll<T>
, может поможет... - person Kit   schedule 10.10.2011