在Autofac中注册具有相同接口的多个对象

时间:2014-09-10 17:08:23

标签: c# 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类的构造函数

1 个答案:

答案 0 :(得分:1)

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

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

}

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