2013-05-14 2 views
0

아무도이 문제를 해결할 수 있습니까? 저는 MEF 프레임 워크를 사용하고 있습니다 만, 이벤트를 통해 "모듈"과 플러그인으로 통신하고 싶습니다.mef로 이벤트 배선

[Export(typeof(IModule))] 
    public class Tests : BaseModule, IModule 
    { 
    public void RememberDescription() 
     { 
      InvokeResult(true, "Please remember to upload a description","Rememberdescription"); 
     } 

그리고이 같은 모듈을 가져올 것입니다 :

[Import(typeof(IModule))] 

public IModule MEF; 
    public void RunTests(string list) 
    { 

      AggregateCatalog catalog = new AggregateCatalog(); 
      catalog.Catalogs.Add(new DirectoryCatalog(folderlocator)); 

      try 
      { 
       CompositionContainer container = new CompositionContainer(catalog); 
       container.ComposeParts(this); 



       MEF.SendResult += MEF_SendResult; 



      } 
      catch (Exception e) 
      { 
       Console.WriteLine(e.Message); 

      } 
     } 

    } 

    void MEF_SendFeedBack(object sender, FeedBackArguments e) 
    { 

    } 

    void MEF_SendResult(object sender, ResultArguments e) 
    { 

    } 

나는 그 두 부분 사이에 공유 인터페이스는이 내 모듈

public class BaseModule 
{   
    public event EventHandler<FeedBackArguments> SendFeedBack; 
    public event EventHandler<ResultArguments> SendResult; 


    public void InvokeFeedback(string message) { 

     if (SendFeedBack != null) 
      SendFeedBack(this, new FeedBackArguments{FeedbackString = message, FeedbackDate = DateTime. public void InvokeResult(bool passed, string resultMessage, string test) { 

     if (SendResult != null) 
      SendResult(this, new ResultArguments { Resultstring = resultMessage, Passed = passed, PassedTime = DateTime.Now, Teststring = test}); 

    } 
} 

되어 만든

모듈 자체에서 이벤트가 트리거되지만 어떤 이유로 인해 이벤트가 실행되지 않거나 목록이 실행되지 않습니다. ener가 제대로 작동하지 않습니다. 도움말은 대단히 감사하겠습니다. 모든 코드에서, 최대 보이고있다;

+0

근무하는 사용 당신이 거기에 있기를 원하는 와트 이상). 그것을 고쳐 주시면 다시 보겠습니다. –

+0

Hello @FrancoisNel, 맞습니다.이 문제와 관련이없는 코드를 수정했습니다. 보이드 MEF_SendFeedBack() 및 MEF_SendResult()에 관해서는 ... 이벤트에 문제가있어 "호출"되지 않기 때문에 아직 채워지지 않았기 때문에 결코 트리거되지 않은 것 같습니다 – machie27

+0

첫 번째 코드를보십시오 블록. 두 개의 if 문이 서로 뒤 따르는 것이 이해가되지 않습니다. 하지만 물어 봅시다 : 당신은 "모듈 자체에서 이벤트가 발생했다"라고 말했지만, 어떻게 (언제) 그리고 언제 트리거가 발생합니까? 이벤트 처리기가 연결되기 전에 트리거되지 않습니까? –

답변

1

정상 이벤트가 MEF에서 작동하지 않습니다, 나는 이벤트 수집기 대신 당신이 게시 코드 (형식이나 뭔가 문제가 있습니다 나를