2016-10-03 1 views
0

lightinject를 사용할 때 외부 설정 파일의 문자열 값을 사용하여 파일에 언급 된대로 서비스를 등록하도록 컨테이너에 알리는 방법이 있습니까? 이것은 XML 파일 또는 web.config 파일에 있습니다.lightinject를 사용하여 xml 파일 또는 web.config를 통해 종속성을 확인하십시오.

예를 들어, 내 Web.config의에서 이전 프로젝트에서 나는 내가 WebConfigurationManager 호출을 통해 값을 얻을 수있는 다음 줄을

<add key="PersonRepository.Interface.IPersonRepository" value="PersonRepository.Db.DbRepository, 
    PersonRepository.Db, Version=1.0.0.0, Culture=neutral"/> 

있을 것입니다. 이 예제는 구체적인 클래스 PersonRepository.Db.DbRepository 이름을 문자열로 가져온 다음 종속성을 해결하는 데 사용할 수 있습니다. 이것은 제가 과거에 사용해 왔던 방법 이었지만 lightinject로 같은 것을하는 법을 알 수는 없습니다. 이것이 가능한가?

죄송합니다. 약간 혼란 스러울 경우, 이것은 의존성 주입에 대한 나의 첫 번째 적절한 진출입니다.

감사합니다.


안녕하세요. 당신이 설명한대로 메서드를 구현하는 데 며칠 동안 노력했지만 효과가 없습니다. 이것을 간결하게 설명하기 위해;

var myString = "hello"; 
Type stringType = Type.GetType(myString); 
container.Register<ICloneable, stringType>(); 

컴파일러에서 오류가 발생합니다. 'stringType'은 변수이지만 유형처럼 사용됩니다.

여기 더 읽을 때;

How to use typeof or GetType() as Generic's Template?

이 언어를 제한 사항입니다 보인다. 어떤 생각이라도 제발? 많은 감사합니다.

답변

1

LightInject는 XML 파일에서 직접 작동하지 않지만 구성 관리자를 통해 유형, 서비스 유형 및 구현 유형을 모두 얻을 수 있어야합니다. 그런 다음 Type.GetType (typeName)과 같은 형식을 사용하여 형식을 확인한 다음 컨테이너에 서비스를 등록해야합니다.

즉, 컨테이너의 구성을 구성 파일에서 코드 (구성 루트)로 이동하는 것이 좋습니다. 컴파일 후 서비스 유형과 구현 유형 간의 매핑은 거의 변경되지 않으며 강력한 유형화 된 구성의 이점을 얻습니다.

+0

정확히 내가 필요한 것, 도와 줘서 고마워. – Aeptitude

+0

안녕하세요. 당신이 설명한대로 메서드를 구현하는 데 며칠 동안 노력했지만 효과가 없습니다. 이것을 간결하게 설명하기 위해; var myString = "hello"; 유형 stringType = 유형 .GetType (myString); container.Register (); 컴파일러에서 오류가 발생합니다. 'stringType'은 변수이지만 형식처럼 사용됩니다. 여기에서 더 읽을 때; http://stackoverflow.com/questions/302577/how-to-use-typeof-or-gettype-as-generics-template 이 언어는 제한적으로 보입니다. 어떤 생각이라도 제발? 많은 감사합니다 – Aeptitude

+0

GitHub에서 계속하지 않는 이유는 무엇입니까? LightInject 저장소에 문제를 만듭니다. 그런 다음 수행하려는 작업으로 샘플로 다른 Repo를 만들고 그 Repo로 홍보합니다. – seesharper

관련 문제