2011-10-18 2 views
1

클래스 가져 오기를 시작한 MEF 기반 모듈 형 앱이 있습니다. 디버깅 과정에서 핵심 문제를 추적하기 위해 mefx 도구를 사용해 왔습니다. 간단히 말해서 내 [Export] 선언이 모두 올바르지 만, Import 또는 ImportMany 속성 중 어느 것도 올바르게 처리되지 않은 것 같습니다.mefx가 가져 오기 프로그램을 나열하지 않습니다.

잘하면이 부분은 내 실수이지만 응용 프로그램이 최근까지 작동하고 있습니다.

여기에 해당 mefx 출력과 함께 작성한 매우 짧은 테스트 응용 프로그램입니다.

using System.ComponentModel.Composition; 

namespace ClassLibrary1 
{ 
    public class Class1 
    { 
     [Import] 
     public Class2 myclass; 
    } 

    [Export] 
    public class Class2 
    { 
    } 
} 

그리고 내가 Class1을 기대했을 것이다

> mefx /file:ClassLibrary1.dll /parts 
ClassLibrary1.Class2 

> mefx /file:ClassLibrary1.dll /exports 
ClassLibrary1.Class2 

> mefx /file:ClassLibrary1.dll /imports 
[blank] 

mexf 출력은 수입으로 나열합니다. 제안?

답변

0

MEF에서 참조하지 않은 클래스에서는 가져올 수 없습니다.

시도 :

namespace ClassLibrary1 
{ 
    [Export] 
    public class Class1 
    { 
     [Import] 
     public Class2 myclass; 
    } 

    [Export] 
    public class Class2 
    { 
    } 
} 

또한 생성자에서 가져올 수 :

namespace ClassLibrary1 
    { 
     [Export] 
     public class Class1 
     { 
      [ImportingConstructor] 
      public Class1(Class2 c2) 
      { 
       myclass = c2; 
      } 

      public Class2 myclass; 
     } 

     [Export] 
     public class Class2 
     { 
     } 
    } 

는 또한, 클래스 1을 ("새로운"키워드를 사용하지 않음) 얻을 수있는 ServiceLocator를 사용합니다.

Class1 myClass1 = ServiceLocator.Current.GetExport<Class1>(); 
+0

이것은 내 문제의 원인은 아니지만 새로운 것을 배웠습니다. – Lucas

+0

도움이 됨 기쁘다 =) –

관련 문제