5

使用 AutoFac 时,您可以使用.RegisterType将类与接口关联,但您也可以使用.Register(它允许您通过 lambda 指定构造函数参数)。

对于具有无参数构造函数的类,这两种方法是否等效?

var builder = new Autofac.ContainerBuilder();

builder.RegisterType<MyClass>().As<IMyInterface>();
builder.Register(x => new MyClass()).As<IMyInterface>();

有没有最好使用的场景.RegisterType

4

1 回答 1

7

假设你的类只有一个定义的构造函数,它们在功能上应该是等效的。

一个内部差异是RegisterType它将使用反射来确定要使用的构造函数,而Registerlambda 提供了所需的所有信息。

于 2012-12-03T21:45:27.443 回答