최근 MVC 3과 Ninject 2로 옮겼습니다. 대부분의 코드에서 생성자 삽입을 사용하지만, Inject
속성을 사용해야하는 곳이 있습니다. Ninject 2는 자신의 IDepencyResolver
인터페이스를 등록합니다. 가있을 때 그 기능은 이제 MVC 정말 엄격하게 관련 아니지만, 때문에 나는NInject 및 MVC 3 - [Inject] 속성 대신 DependencyResolver를 사용해야합니까?
public SomeClass
{
public IUserService UserService { get; set; }
public SomeClass()
{
UserService = DependencyResolver.Current.GetService<IUserService>();
대신
public SomeClass
{
[Inject]
public IUserService UserService { get; set; }
할 수있는,
System.Web.Mvc
네임 스페이스의 일부가되는
DependencyResolver
클래스를 좋아하지 않는다
그래서 내 클래스에 Ninject
네임 스페이스를 참조 할 필요가 없습니다. DependencyResolver
을 그렇게 사용해야합니까?
그리고 BaseClass가 예를 들어 생성자에 3 개의 인터페이스가 삽입되어 있고 InheritedClass에 추가가있는 경우에는 무엇을합니까? 2. 5 개의 매개 변수로 생성자를 만드십니까? – LukLed
@ LukLed, 네,하지만 일반적으로 의존성의 수를 줄이려고합니다. 5 꽤 큰 것 같습니다.그것은 당신의 수업이 너무 많은 일을하고 있다는 것을 의미하며 아마 그것을 다른 수업으로 나누는 것을 고려해야합니다. –
너무 많습니까? IPrincipal이 주입되고, IRepository가 주입되고, IApplicationCache가 BaseClass에 주입됩니다. 이것들은 모든 서비스에 사용되는 기본 항목입니다. 나는 직접적으로 참조하는 대신 가능한 한 많이 주입하려고 노력한다. 그것은 생성자에서 많은 매개 변수를 만듭니다. 좋습니다, 나는 집합 서비스로 그것을 취급 할 수있다. – LukLed