任何人都可以帮我解决这个问题吗?我正在使用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 :(得分:1)
正常事件在MEF中不起作用,我使用了Event Aggregator而不是为我工作