事件接线与mef

时间:2013-05-14 12:35:23

标签: c# events 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)
    {

    }

事件在模块本身中被触发,但由于某种原因,事件不会被触发或者监听器不能正常工作。非常感谢帮助。

1 个答案:

答案 0 :(得分:1)

正常事件在MEF中不起作用,我使用了Event Aggregator而不是为我工作