2009-07-10 1 views
2

IApplicationContext.GetObject (문자열 이름) 메서드에 대해 생각해 보았는데 응용 프로그램 컨텍스트에서 개체를 가져 오는 데 마술 문자열에 상당히 의존하는 것 같습니다. StructureMap과 같은 다른 컨테이너를 사용하면 제네릭을 사용하여 구성 및 요청 객체를 지정할 수 있지만 Spring.Net IoC 컨테이너에서 문자열을 사용하여 ApplicationContext에서 객체를 요청하는 것보다 더 나은 방법이 있습니까?Spring.Net IoC 및 Magic String

답변

0

제네릭 형식 매개 변수를 사용하여 호출하는 래퍼가있을 수 있습니다. 다른의 IoC contatiners의 일부로서

public void MyMethod() 
{ 
    IMyService myService = ApplicationContextWrapper.Resolve<IMyService>(); 
} 


public static class ApplicationContextWrapper 
{ 
    public static T Resolve<T>() 
    { 
     return ApplicationContext.Resolve<T>(typeof(T).Name); 
    } 
} 

좋지 않다,하지만 적어도 당신은 컴파일러 지원의 어떤 종류를 얻을 것이다 :

이런 식으로 뭔가.

2

봄은 adapter을 통해 CommonServiceLocator을 지원합니다. 이 인터페이스는 사용자가 예상 한 the API을 가지고 있으며 기존 서비스 로케이터와 비교하여 컴파일하므로 기존 코드를 수정하지 않고도 IoC 컨테이너를 전환 할 수 있습니다.