Я начал использовать Ninject сегодня, потому что Structuremap позволил мне долгое время.Ninject Multiple Type Constructor
Я столкнулся с проблемой, когда начал регистрировать те же типы с теми же интерфейсами, но я назвал их (как показано ниже).
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-implementationations-in-ninject) –
Конструктор должен иметь атрибут «Named» –
Привет. Это не дубликат из-за того, что я пытаюсь достичь l логики привязки в методе RegisterService. Я не хочу включать библиотеку ninject в свой слой репозитория. – Csharper