2012-12-20 115 views
3

我一直在使用Ninject的具體實例,像這樣:Ninject返回對象

ninjectKernel.<IBlogRepository>().To<BlogRepository>(); 

我想返回特定obejct。 我怎麼得到這樣的事情,而不是

ninjectKernel.<IInvestorRepository>(). // returns this : new BlogRepository(new (new BlogContext(Settings.Default.BlogConnection))) 

回答

6

嘗試

var singleInstanceOfRepository = new BlogRepository(); 

ninjectKernel.Bind<IBlogRepository>().ToMethod(context => singleInstanceOfRepository); 

所有調用內核會解決IBlogRepositorysingleInstanceOfRepository

+1

難道你也能夠做到ninjectKernel。()。()。InSingletonScope() – Jamie

+1

@Jamie - 是的,但是內核會爲你構建實例。如果您想自己構建實例,則需要使用提供者方法。 OP在詢問* specific *對象,所以我假設它是在內核之外構建的。 –

+0

@Jamie我會如何使用你的方法來使BlogRepository變成新的:>新的BlogRepository(新的UnitOfWork(新的BlogContext(Settings.Default.BlogConnection))) – Nikos