2013-05-14 31 views
0

任何人都可以幫我解決這個問題嗎?我正在使用MEF框架,但我想通過事件與「模塊」通信到插件。與mef的事件接線

我創建了這兩個部件之間的共享接口這

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}); 

    } 
} 

,這是我的模塊:

[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) 
    { 

    } 

事件在模塊本身中被觸發,但由於某種原因事件不會被觸發或列表能源不能按原樣工作。非常感謝幫助。

+0

有什麼不對的,你發佈的代碼(格式什麼的,不是所有的代碼顯示出來,在至少你打算去那裏)。請修復它然後我會再看看。 – 2013-05-14 13:01:13

+0

你好@FrancoisNel,這是正確的我編輯了與這個問題無關的代碼。至於空洞MEF_SendFeedBack(){}和MEF_SendResult()....那些還沒有被填充,因爲他們從來沒有被「調用」,因爲事件有什麼問題,似乎沒有被觸發 – machie27 2013-05-14 13:18:31

+0

看看你的第一個代碼塊。有兩個if語句相互關聯,這是沒有意義的。但是讓我問一下:你說過「事件在模塊本身中被觸發」,但是(如何)以及它何時被觸發?在事件處理程序被掛鉤之前它沒有被觸發嗎? – 2013-05-14 18:09:47

回答

1

正常事件不會在MEF工作,我用的事件聚合,而不是其工作對我來說