2014-11-15 1 views
2

저는 ASP MVC 프로젝트에서 LightInject를 사용하고 있습니다. 예를 들어, HTML 도우미 정적 함수의 인스턴스를 해결하는 방법에 http://www.lightinject.net/#mvcLightInject를 사용하여 정적 함수의 인스턴스 해석

내 질문은 :

public static string MyHtmlExtension(this HtmlHelper h) 
{ 
    var myService = new MyService(); // <- get this from container instead of creating new object 
    return myService.DoSomething(h); 
} 

내가 MvcApplication 클래스의 ServiceContainer를 만들 수 초기화 코드에서와 더 많거나 적은 동일 정적 또는 나쁜 연습입니까?

답변

2

대부분의 경우 응용 프로그램 도메인 당 하나의 컨테이너 인스턴스가 있기 때문에 컨테이너를 싱글 톤 (정적)으로 만들 수 있습니다. 즉, 확장 메소드 내에서 컨테이너에 액세스하지 않는 것이 좋습니다. 기본적으로 여기서하는 것은 안티 패턴으로 간주되는 서비스 위치 지정자 패턴입니다. 컴포지션 루트 (응용 프로그램 시작)에서 컨테이너를 참조하는 방식으로 코드를 구성하십시오. 따라서이 경우 컨테이너없이 확장 메소드를 작성하거나 HtmlHelper를 필요한 클래스에 삽입 할 수 있습니다.

감사합니다. Bernhard Richter (작성자 : LightInject)

+0

답장을 보내 주셔서 감사합니다. 함수를'string MyHtmlExtension (이 HtmlHelper h, MyService 서비스)'로 변경하고'ViewBag'에있는'MyService' 인스턴스에 대한 참조를 넣으면 옵션이 될까요? – Marthijn

+0

@Marthijn 정말 도움이된다면 대답을 수락하십시오. :) – RajeshKdev

+0

@RJK, 할 것이다. 그러나 나는 그 대답에 대한 질문을 물었고, 나는 그 대답을 기다리고있다. – Marthijn