繁体   English   中英

在Autofac中使用同一接口注册多个对象

[英]Registering multiple objects with same interface in Autofac

我在XYZManager类的构造函数中调用以下代码,该应用程序正在运行。

var handlers = new ITableType[]
{
    new AbcHandler(new Logger(), new Repository()),
    new OtherHandler(new Logger(), new Repository())
    /*etc...*/
};

XYZManagerLoggerRepository使用Autofac在我的应用程序中注册。

问题是,当我上线时,我将有大约25个处理程序,因此非常想拥有一种更具可维护性的代码...

我希望我能够解释我的问题。

编辑:我想知道的是如何在autofac中注册我的处理程序,以及需要对上述代码进行哪些更改。

我想我可以像这样注册每个处理程序:

builder.RegisterType<AbcHandler>().As<ITableType>()

但是如何更改XYZManager类的构造函数

注册ITableType的实现者ITableType ,可以像下面这样定义您的构造函数。

public XYZManager(ITableType[] handlers, /* other params... */)
{

}

Autofac将为您提供一个包含每个已注册ITableType对象之一的数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM