2012-01-27 4 views
0

Windows Form에 모든 양식 값을 저장하는 ScreenParameter 클래스 (IScreenParameter 구현)가 있습니다. 이 클래스는 사용자가 모든 필드를 채우고 버튼을 클릭 할 때 시작됩니다. Bussiness Layer의 클래스는 생성자에서 IScreenParameter를 기다립니다. 나는 인터페이스를 주입하기 위해 구조체 맵을 사용하고 있으며 컨텍스트에 따라 생성해야한다. 인터페이스를 생성하고 채우는 메소드 (GetScreenParameters)가 있습니다. 구조체 맵을 구성하는 동안 클래스를 구성하는 대신 메소드 이름을주고 싶습니다.구조체 맵에서 구체적인 클래스 이름 대신 메서드 이름 부여

ObjectFactory.Initialize(initialize => 
     { 
      initialize.For<IScreenParameter>().Use(GetScreenParameters); 

     }); 

하지만 작동하지 않습니다. 이것을 달성하는 방법을 도와 주실 수 있습니까? 당신이 얻을 할 때마다 호출 할

initialize.For<IScreenParameter>().Use(() => GetScreenParameters()); 

이는 GetScreenParameters 방법을하게됩니다 : 코드를 가정

+0

GetScreenParameters는 어디에 있으며 멤버 메서드 또는 클래스 (정적) 메서드입니까? GetScreenParameters는 매개 변수를 필요로합니까? – PHeiberg

+0

아니요, 정적이 아닙니다. GetScreenParameters는 Form.cs에 있고 IScreenParameter를 반환합니다. 위의 코드는 Form.csCtor에서 실행됩니다. – londondev

답변

0

는 다음과 같은 구문을 사용할 수 있습니다 GetScreenParameters 방법을 포함 년대 Form 클래스의 인스턴스에서 호출 IScreenParameter의 인스턴스 동일한 인스턴스를 매번 싱글 톤으로 등록해야하는 경우 :

initialize.For<IScreenParameter>().Use(GetScreenParameters()); 
+0

불행히도 작동하지 않았습니다. 그래, 코드는 GetScreenParameter 클래스를 포함하는 Form 생성자에서 호출됩니다. – londondev

+0

"작동하지 않았다"는 의미에 대해 좀 더 많은 정보를 제공해야한다고 생각합니다. 컴파일 또는 런타임 오류가 발생합니까? 그렇다면 어떤 종류의 오류가 발생합니까? 나는 이것의 베어 본 버전을 테스트했고 그것은 내 컴퓨터에서 작동했습니다. :-) – PHeiberg

+0

예, Ctor 양식에서 "ObjectFactory.BuildUp (this)"을 호출하면 예외가 발생합니다. 그것은, PluginFamily .IHYSDataBL에 대해 정의 된 기본 인스턴스가 없습니다. 내가 당신의 코드에 주석을 달았을 때 IHYSDataBL이 Structure Map 컨테이너에 생성되었습니다. – londondev

관련 문제