На ContainerBuilder
я могу сделать следующее:Регистрация делегата FUNC по соглашению
builder.Register<ScenariosConfig>(c =>
(ScenariosConfig)c.Resolve<ConfigFactory>()
.Create(typeof(ScenariosConfig)))
.SingleInstance();
С сборочного сканирования я могу сделать следующее:
builder.RegisterAssemblyTypes(assemblies)
.Where(HasSingletonAttribute)
.As(t => GetNameMatchingInterfaces(t))
.SingleInstance();
Теперь вопрос: Есть ли способ достижения следующего:?
builder.RegisterAssemblyTypes(assemblies)
.Where(... some condition)
.CreateByDelegate((container, type)
=> c.Resolve<ConfigFactory>().Create(type))
.SingleInstance();
Я уже узнал о IRegistrationSource
, с которым я могу достичь чего-то подобное. Тем не менее, я немного скептически отношусь к влиянию производительности создания тонов IRegistrationSource
для каждого из моих соглашений, для чего требуется делегат для создания ... А также есть тот факт, что IRegistrationSource
не может использоваться, когда вам нужно разрешить все экземпляры IFoo
, которые должны быть связаны таким «соглашением».