使用Resolve时Autofac是否省略RegisterType?

时间:2012-02-03 16:31:45

标签: autofac

我需要在解决之前注册一个类型吗?

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>();

1 个答案:

答案 0 :(得分:1)

不,您需要先注册组件,然后才能解决它们的依赖关系。

在某些特定情况下,Autofac的AnyConcreteTypeNotAlreadyRegisteredSource可以自动完成此过程。

更常见的是,ContainerBuilder.RegisterAssemblyTypes()用于批量注册并减少重复。