문제

하려고 해요 내 가장 좋은 방법을 사용하 IoC 내 응용 프로그램를 위해성 주입,그러나 내가 약간의 문제입니다.

내가 사용하고 느슨한 구현 MVP 패턴 WPF 앱입니다.기본적으로,발표자 클래스의 인스턴스화하고 보고하는 작업(예:IEmployeeView 및 IEmployeeTask 에 대한 EmployeePresenter)주사로 발표되었다.

를 사용하고 싶 IoC 컨테이너(나가고 화합하지만,이 것 또한 일어나 다른 사람들과 같은 ninject 또는 구조도)신 수동으로 주입하여 이러한 경우,그러나는 경우에는 발표자가 만든(또는 해결에서 IoC container)에서는 비동기 대리,전화 또는 이벤트 실(예:지 않는 스레드 STA)다음의 새 인스턴스를 만들 WPF 창 던졌 다음과 같은 예외:

현재 구축 작업(빌 열쇠 를 구축 키[네임스페이스.Window1,null]) 지 못했습니다:스레드 호출해야 합 STA 기 때문에,많은 UI 구성 요소 필요합니다.

지금,나는 새로운 창 인스턴스 등이 필요할 STA,그러나 그것은 사용하는 것이 가능하 IoC 컨테이너지 의존성 삽입할 때에도 UI 를 만들어야 합니다에 STA thread?

보고에서 이 문제는 그것을 것 같다는 클래스/형식 해결되는 인스턴스화에는 해결 시간을하지 않을 때,그것의 등록된...

도움이 되었습니까?

해결책

발표자 객체를 만들기 위해 공장을 사용한다고 말합니다. 이렇게하면 STA 스레드에서 발표 내에서 발표자의 일반적인 인스턴스를 작성한 다음 필요할 때 간단히 전달할 수 있습니다.

다른 팁

귀하의 문제는 IOC와 관련이 없으며 WPF 객체는 생성 된 것과 동일한 스레드에서만 액세스 할 수 있으므로 GUI의 나머지 부분과 같은 스레드 (STA 스레드가 아닌)에서 발표자를 만들어야합니다.

Dispatcher.beginInvoke를 사용하여 기본 스레드에서 코드를 실행하고 거기에서 IOC Contianer를 호출하십시오.

당신이 언급한 통일을 보고 있어서 사용하는 복합 응용 프로그램 라이브러리를 사용한다?이 StockTrader 샘플 응용 프로그램을 사용하여 통일을 주입하기 전망을 프레젠테이션 모델을..당신이 원하지 않는 경우 실제로 사용하여 칼-추가 정보:(http://msdn.microsoft.com/en-us/library/cc707890.aspxhttp://www.codeplex.com/CompositeWPF)

할 수 있는 방법을 일은 그들이 주위에 얻었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top