Я добавляю autofac к существующему проекту, а некоторые из реализаций службы требуют, чтобы их метод Initialize вызывался и передавал информацию о конфигурации. В настоящее время я использую код:Как выполнить пользовательскую инициализацию с помощью autofac
builder.Register(context =>
{
var service = new SqlTaxRateProvider(
context.Resolve<IUserProvider>()
);
service.Initialize(config);
return service;
}
).As<ITaxService>()
.SingleInstance();
, который работает, но я до сих пор создает объект сам, который является то, что я пытаюсь уйти от этого и позволить autofac справиться с этим для меня. Можно ли настроить операцию создания сообщения, которая будет выполнять пользовательскую инициализацию?
Чтобы дать вам представление о том, что я после того, как в идеале это будет код:
builder.RegisterType<SqlTaxRateProvider>()
.As<ITaxService>()
.OnCreated(service=> service.Initialize(config))
.SingleInstance();
Update: Я использую Autofac-2.1.10.754-NET35
Лучшим вариантом было бы отказаться от метода Initialize в первую очередь. Вместо этого используйте ** Constructor Injection **. –
Я согласен, на каком-то этапе я обойду его, я просто искал быстрое решение, облегчающее мои первоначальные изменения. –