カスタマイズAutofacコントローラの登録
-
23-09-2019 - |
質問
私は、ASP.NET MVCコントローラを登録するAutofacとAutofac.Integrations.Webを使用しようとしています。私は現在、アセンブリのコントローラを見つけるためにスキャンするが、そのうちの一つは、私が代わりに合格することを好むだろうと、特別なパラメータを必要とする使用しています。私が試してみました登録は以下の通りですが見つかります。
var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
// so far I have tried
builder.Register<SpecialController>(c =>
new SpecialController(wierdParam, c.Resolve<IDependency>())
).Named<SpecialController>("controller.special")
.As<SpecialController>().As<IController>();
/* And this
builder.Register<SpecialController>(c =>
new SpecialController(url, c.Resolve<IDependency>())
);
*/
/* plus this
builder.Register<SpecialController>(c =>
new SpecialController(url, c.Resolve<IDependency>())
).Named<SpecialController>("controller.special");
*/
ご協力いただきありがとうございます。
解決
私はいくつかの工夫の後、デバッガでいじくる働い登録を見つけることができた。
var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.Register<IController>(c =>
new SpecialController(weirdParam, c.Resolve<IDependency>())
).Named<IController>("controller.special");
この作品をAutofacが自動的に型IController
の隠された名前の登録と異なるコントローラを登録しているためです。
他のヒント
uは任意のクラスオブジェクト
を渡したい場合はwithParameterを使用するようにしてください例えばます:
builder.RegisterType<ApplicationSettingsRepository>().As<IApplicationSettingsRepository>()
.WithParameter(new TypedParameter(typeof(NameValueCollection), ConfigurationManager.AppSettings))
所属していません StackOverflow