我需要在解决之前注册一个类型吗?
builder.RegisterType<Driver>().As<IDriver>();
builder.Register(c => new Car(c.Resolve<IDriver>())).As<IVehicle>();
或者我可以省略寄存器类型行。解决方案会为我注册吗?
修改
我应该使用RegisterType还是Register
builder.Register(c => new Driver()).As<IDriver>();
builder.Register(c => new Car(c.Resolve<IDriver>())).As<IVehicle>();
答案 0 :(得分:1)
不,您需要先注册组件,然后才能解决它们的依赖关系。
在某些特定情况下,Autofac的AnyConcreteTypeNotAlreadyRegisteredSource
可以自动完成此过程。
更常见的是,ContainerBuilder.RegisterAssemblyTypes()
用于批量注册并减少重复。