2011-09-04 11 views
1

我在asp.mvc項目中設置了「Ninject」。每個控制器都有它的依賴類,它工作正常。但我在mvc項目中有一個類不是控制器。這是一個擴展「MembershipProvider」的簡單類(因爲我已經創建了自定義成員資格),並且需要在其中注入「UserRepository」類。 在NinjectControlelrFactory我賓特它:如何使用ninject在nonController類中注入類

private void AddBindings() 
{ 
ninjectKernel.Bind<IUserRepository>().To<UserRepository>().WithConstructorArgument(
       "connectionString", ConfigurationManager.ConnectionStrings["connStr"].ConnectionString); 
} 

但如何從非控制器類怎麼做呢? PS 我無法通過構造函數注入。

我有一些解決方案,但我不知道它是如何「乾淨」的是:

using (IKernel kernel = new StandardKernel()) 
      { 
       kernel.Bind<IUserRepository>() 
        .To<UserRepository>() 
        .WithConstructorArgument("connectionString", "ttttttttttttt"); 
       //var tc = kernel.Get<IUserRepository>(); 
       this.userRepository = kernel.Get<IUserRepository>(); 
      } 

回答

1

使用屬性注入。在Ninject中註冊您的MembershipProvider,並使用Property injection

您將需要通過ninject上下文實例化MembershipProvider

查看這篇文章。

Property Injection in ASP.NET MVC with Ninject

Injecting properties in Ninject 2 without 'Inject' attribute

+0

由於這會幫助我。但你能檢查我更新的問題嗎?我寫了一些東西,它可以工作,但我不確定它是獲取依賴類的有效方法嗎? – 1110

+0

如果你的'MembershipProvider'這個代碼 - 它不是依賴注入,因爲你在這裏使用你的實現類型'UserRepository',它已經依賴於它。 – Samich

+0

是的,你是對的。我改變了代碼屬性注入,但我總是得到'對象引用未設置'我可以; t數字爲什麼:( – 1110

相關問題