0
今天我開始使用Ninject了,因爲Structuremap讓我大開眼界。Ninject多種類型構造函數
當我開始使用相同的接口註冊相同的類型但我已經命名它們(如下所示)時,我遇到了一個問題。
kernel.Bind<IDataContextAsync>().To<DbGeoContext>().InRequestScope().Named("DbGeoContext");
kernel.Bind<IDataContextAsync>().To<DbEspContext>().InRequestScope().Named("DbEspContext");
IParameter geoUnitOfWorkDbContext = new ConstructorArgument("dataContext", kernel.Get<IDataContextAsync>("DbGeoContext"));
IParameter espUnitOfWorkDbContext = new ConstructorArgument("dataContext", kernel.Get<IDataContextAsync>("DbEspContext"));
kernel.Bind<IUnitOfWorkAsync>().To<UnitOfWork>().Named("UnitOfWorkGeoContext").WithConstructorArgument(geoUnitOfWorkDbContext);
kernel.Bind<IUnitOfWorkAsync>().To<UnitOfWork>().Named("UnitOfWorkEspContext").WithConstructorArgument(espUnitOfWorkDbContext);
**Fails here with: Error activating IDataContextAsync
多於一個的匹配綁定可用**
變種T1 = kernel.Get( 「UnitOfWorkGeoContext」); var t2 = kernel.Get(「UnitOfWorkEspContext」);
有人可以幫我弄清楚這裏發生了什麼,以及如何解決它?
我明白在運行時Ninject不會能夠找出哪個實例注入,但我雖然這是'命名'實例是什麼?
感謝
[接口與ninject多個實現](的可能的複製http://stackoverflow.com/questions/19119591/ interface-with-multiple-imple-in-ninject) –
構造函數必須具有'Named'屬性 –
嗨這不是重複的,因爲我試圖實現l RegisterService方法中的綁定邏輯。我不想將ninject庫包含到我的Repository層中。 – Csharper