2012-02-03 21 views
0

在解決問題之前是否需要註冊類型?使用Resolve時Autofac省略RegisterType?

builder.RegisterType<Driver>().As<IDriver>(); 

builder.Register(c => new Car(c.Resolve<IDriver>())).As<IVehicle>(); 

或者我可以省略寄存器類型行。決心會爲我註冊嗎?

編輯

我應該使用RegisterType或註冊

builder.Register(c => new Driver()).As<IDriver>(); 

builder.Register(c => new Car(c.Resolve<IDriver>())).As<IVehicle>(); 

回答

1

不,你需要註冊的組件,然後才能對他們的解決依賴關係。

在某些特定情況下,Autofac的AnyConcreteTypeNotAlreadyRegisteredSource可能會自動執行此過程。

更經常地,ContainerBuilder.RegisterAssemblyTypes()用於批量註冊和減少重複。

+0

謝謝。我應該使用寄存器還是寄存器類型?查看更新的問題 – ministrymason 2012-02-03 17:02:59

+0

不客氣。兩者都很好。因此,如果您需要更多信息,最好提出一個新問題 - 讓其他人稍後可以更輕鬆地找到信息。並且不要忘記將問題標記爲已回答:) – 2012-02-03 17:12:04