[英]Registering multiple objects with same interface in Autofac
I'm calling the below code in XYZManager
class's constructor and the application is working. 我在XYZManager
类的构造函数中调用以下代码,该应用程序正在运行。
var handlers = new ITableType[]
{
new AbcHandler(new Logger(), new Repository()),
new OtherHandler(new Logger(), new Repository())
/*etc...*/
};
XYZManager
, Logger
and Repository
are registered in my application using Autofac. XYZManager
, Logger
和Repository
使用Autofac在我的应用程序中注册。
The problem is I will have around 25 handlers when I go live and so would like very much a way to have a more maintainable code... 问题是,当我上线时,我将有大约25个处理程序,因此非常想拥有一种更具可维护性的代码...
I hope I have been able to explain my problem. 我希望我能够解释我的问题。
EDIT: What I would like to know is how to register my handlers in autofac and what changes do I need to make to my above code.. 编辑:我想知道的是如何在autofac中注册我的处理程序,以及需要对上述代码进行哪些更改。
I guess I could register every handler like this : 我想我可以像这样注册每个处理程序:
builder.RegisterType<AbcHandler>().As<ITableType>()
But how do I change my XYZManager class's constructor 但是如何更改XYZManager类的构造函数
After you register your implementors of ITableType
, you can define your constructor like so... 注册ITableType
的实现者ITableType
,可以像下面这样定义您的构造函数。
public XYZManager(ITableType[] handlers, /* other params... */)
{
}
and Autofac will give you an array with one of each of your registered ITableType
objects. Autofac将为您提供一个包含每个已注册ITableType
对象之一的数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.