在抽象基控制器使用Ninject屬性我有以下代碼:物業注射沒有MVC3
public abstract class BaseController : Controller
{
public IUserService UserService { get; set; }
}
我所有的控制器從這個基本控制器繼承。我開始通過使用以下代碼在Ninject中配置它:
kernel.Bind<BaseController>()
.ToSelf()
.WithPropertyValue("UserService", x => x.Kernel.GetService(typeof(IUserService)));
這沒有奏效。我認爲這是因爲BaseController是一個抽象類(請確認我的假設)。所以我繼續修改配置爲:
kernel.Bind<HomeController>()
.ToSelf()
.WithPropertyValue("UserService", x => x.Kernel.GetService(typeof(IUserService)));
這是行不通的。小的缺點是我現在必須以相同的方式配置每個控制器。
因爲我也有DependencyResolver建立在我的ASP.NET MVC 3項目我還可以刪除上述Ninject配置和修改我的基本控制器看起來像:
public IUserService UserService
{
get
{
return DependencyResolver.Current.GetService<IUserService>();
}
}
有沒有用流利的任何好處配置,而不是使用DependencyResolver方法?這個比那個好嗎?哪種方法會被認爲是更好的做法?
值得一提的是,我不想在我的基礎控制器中做構造函數注入。
一直沒有這個問題已經被問和[使用Ninject 2房產注射液基本控制器(在回答http://stackoverflow.com/questions/3154240/property-injection-in-base-controller-using-ninject -2 /),儘管形式稍有不同。 – mrydengren
這個問題涉及到MVC 3中的DependencyResolver,而前一個沒有。問題是,哪種方法更好,而不是如何做到這一點。 – Thomas
MVC3/DependencyResolver完全沒有變化 –