2010-06-30 3 views
1

구체적 유형 (MyType1)을 생성자에 전달 된 특정 func으로 인스턴스화하도록 지정하려고합니다.StructureMap XML 구성 파일에서 생성자 매개 변수를 어떻게 지정합니까?

생성자는 다음과 같습니다

public MyTYpe1(Func<Type1, Type2> myFunc) 
{ 
    //... 
} 
내가 StructureMap의 XML 구성 파일의 myFunc PARAM을 지정할 수있는 방법

?

참고, myFunc에 다른 유형의 정적 메서드 (MyType2.MyMethod)를 전달하고 싶습니다. 코드에서 MyType1을 구성한다면 :

var instance = new MyType1(MyType2.MyMethod); 

답변

0

XML 파일에 클래스 이름과 메소드 이름을 쓸 수 있습니다.

그런 다음 실행시, 반사를 통해, 당신은 그 방법에 대한 MethodInfo를 얻을 것입니다 :

var instance = new MyType1<Type1, Type2>(x => (Type2)method.Invoke(null, x)); 

널 매개 변수가 사용되는 : 다음

var method = Type.GetType(nameOfClass).GetMethod(nameOfMethod); 

당신은 그 방법을 호출 람다 통과 정적 메소드의 경우.

+0

저는 XML 구성을 찾고 있습니다. 나는 (pseudo-xml)과 같은 것을 기대할 것이다. "이 인터페이스의 구체적인 유형은 this이며,이 메소드는 생성자에 전달된다." 구성시, StructureMap tp는 xml에 정의 된 func로 MyType1의 인스턴스를 자동으로 인스턴스화합니다. 이게 말이 돼? – Ben

0

구조 파일은 구성 파일을 통해 생성자를 지정하는 옵션을 지원하지 않습니다 (적어도 2.6.4.1까지). 기본적으로 그리고 항상 XML 파일을 통해 구성된 종속성을 구성 할 때 StructureMap은 항상 가장 탐욕스러운 생성자를 선택합니다. 이 제한 사항을 극복하기 위해 이러한 종속성을 레지스트리에 저장해야합니다.