是.Register和.RegisterType等价(对于具有无参数构造函数的类)?

时间:2012-12-03 12:09:42

标签: c# dependency-injection autofac

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

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

var builder = new Autofac.ContainerBuilder();

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

是否存在使用.RegisterType的情况?

1 个答案:

答案 0 :(得分:7)

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

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