最近我搬到了MVC 3和Ninject 2中。在大多數代碼中,我使用構造函數注入,但也有一些地方,我不得不使用Inject
屬性。 Ninject 2註冊自己的IDepencyResolver
接口。我不喜歡DependencyResolver
類是System.Web.Mvc
命名空間的一部分,因爲它的功能是不是真的嚴格把MVC,但是現在,當它是存在的,我能做到NInject和MVC 3 - 我應該使用DependencyResolver而不是[Inject]屬性嗎?
public SomeClass
{
public IUserService UserService { get; set; }
public SomeClass()
{
UserService = DependencyResolver.Current.GetService<IUserService>();
,而不是
public SomeClass
{
[Inject]
public IUserService UserService { get; set; }
所以我不必在我的類中引用Ninject
命名空間。應該如此使用DependencyResolver
?
`DependencyResolver`是對`DI`庫的某種抽象。這個類與Ninject無關。我在基類中使用`Inject`屬性,因爲我不想將參數添加到每個繼承類的構造函數中。我也有一些循環參考問題。 – LukLed 2011-02-16 17:56:32
不好意思,我對ninject不太熟悉,但如果你關心ninject引用的污染代碼,自動構造函數注入不是一個選項嗎? http://kohari.org/2008/06/08/attributes-we-dont-need-no-stinkin-attributes/ – 2011-02-16 18:06:50
構造函數注入是一個選項,但我不想擁有巨大的構造函數。好。當我沒有太多想法時,我可能會做太多的想法。 – LukLed 2011-02-16 18:34:22