Я заметил, что мне довольно часто нужно реализовывать составной шаблон.Например:
interface IService { ... }
class Service1 : IService { ... }
class Service2 : IService { ... }
class CompositeService : IService
{
public CompositeService(IEnumerable<IService> services) { ... }
...
}
Я хочу зарегистрировать CompositeService в качестве IService в контейнере и добавить зависимости.
(выглядит несколько похоже на Decorator, но украшает набор служб вместо одного)
Каков наилучший способ сделать это в автофактуре?
Как будет выглядеть идеальное решение (для C #)?
Обновление:
Моя текущая регистрация:
builder.RegisterType<Service1>().Named<IService>("impl");
builder.RegisterType<Service2>().Named<IService>("impl");
builder.Register(c => new CompositeService(c.Resolve<IEnumerable<IService>>("impl")))
.As<IService>();
Она похожа на Декорации от руки в http://nblumhardt.com/2011/01/decorator-support-in-autofac-2-4
Можно ли ее улучшить?