当前位置: 首页 > 编程语言 > C#

c#插件事件处理分享

时间:2023-04-11 03:38:47 C#

c#插件事件处理我写了一个插件系统,它使用一个接口,任何满足这个契约的插件都会在运行时加载到主系统中。该插件有效地返回一个插入主应用程序并由插件dll控制的TabPage。如果插件出现错误,将显示标准的Windows错误消息。我想要做的是创建一个返回错误消息的事件,这样我就可以在我为文本保留的区域中显示它。我是否需要跟踪所有连接的插件/接口实例才能设置一个事件来监视每个实例?目前,我的系统是循环遍历app文件夹下的dll,加载那些满足接口约定的dll,每次丢掉控件,丢掉接口的实际实例,然后通过loaded交给dll按钮事件。TabPage并在插件中进行处理。我希望这一切都有意义。您不需要保留对插件类的引用,只需在启动时向事件添加一个委托,之后您就不再需要该引用了。您可以向您的插件合约添加一个事件:publicinterfaceIPlugin{eventEventHandlerError;无效初始化();这样当插件发生错误时任何主机都可以订阅事件:publicclassMyPlugin:IPlugin{publiceventEventHandlerError;publicvoidInitialise(){try{}catch(Exceptione){OnError(newErrorEventArgs(e));}}protectedvoidOnError(ErrorEventArgse){varev=Error;如果(ev!=null)ev(this,e);如果我正确地遵循了你的帖子,这就是我会做的。在插件界面(比方说IPlugin)中,您需要声明一个事件。公共委托voidShowErrorEventHandler(stringerrorMessage);公共接口IPlugin{事件ShowErrorEventHandlerShowError;然后当你加载你的插件时,每个插件只订阅它的ShowError事件,例如:...foreach(varplugininplugins){plugin.ShowError+=MainForm_ShowError;}...privatevoidMainForm_ShowError(stringerrorMessage){//处理错误...将其粘贴在您的保留区域txtReservedArea.Text=errorMessage;希望对您有所帮助以上是C#学习教程:c#插件事件处理分享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: