使用AutoFac时,可以使用.RegisterType
将类与接口关联,但也可以使用.Register
(允许您通过lambda指定construtor参数)。
对于具有无参数构造函数的类,这两个方法是等效的吗?
var builder = new Autofac.ContainerBuilder();
builder.RegisterType<MyClass>().As<IMyInterface>();
builder.Register(x => new MyClass()).As<IMyInterface>();
是否存在使用.RegisterType
的情况?
答案 0 :(得分:7)
假设你的类只有一个定义的构造函数,它们在功能上应该是等价的。
一个内部差异是RegisterType
将使用反射来确定要使用的构造函数,而Register
与lambda一起提供所需的所有信息。