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)
{
}
事件在模塊本身中被觸發,但由於某種原因事件不會被觸發或列表能源不能按原樣工作。非常感謝幫助。
有什麼不對的,你發佈的代碼(格式什麼的,不是所有的代碼顯示出來,在至少你打算去那裏)。請修復它然後我會再看看。 – 2013-05-14 13:01:13
你好@FrancoisNel,這是正確的我編輯了與這個問題無關的代碼。至於空洞MEF_SendFeedBack(){}和MEF_SendResult()....那些還沒有被填充,因爲他們從來沒有被「調用」,因爲事件有什麼問題,似乎沒有被觸發 – machie27 2013-05-14 13:18:31
看看你的第一個代碼塊。有兩個if語句相互關聯,這是沒有意義的。但是讓我問一下:你說過「事件在模塊本身中被觸發」,但是(如何)以及它何時被觸發?在事件處理程序被掛鉤之前它沒有被觸發嗎? – 2013-05-14 18:09:47