加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在C#中正确插入插件?

发布时间:2020-12-15 04:30:49 所属栏目:百科 来源:网络整理
导读:我正在尝试添加插件到我的游戏,我想要实现的是这样的: 插件将是我的或第三方,所以我想要一个解决方案,崩溃的插件不意味着崩溃的主要应用程序. 常常调用插件的方法(例如由于绘制游戏对象). 我到目前为止发现的 1)http://www.codeproject.com/KB/cs/pluginsin
我正在尝试添加插件到我的游戏,我想要实现的是这样的:

>插件将是我的或第三方,所以我想要一个解决方案,崩溃的插件不意味着崩溃的主要应用程序.
常常调用插件的方法(例如由于绘制游戏对象).

我到目前为止发现的

> 1)http://www.codeproject.com/KB/cs/pluginsincsharp.aspx – 简单的概念,似乎应该能很好地工作.由于插件在我的游戏中用于每一轮,我将足以添加Restart()方法,如果不再需要插件Unload()方法GC应该照顾.
> 2)http://mef.codeplex.com/Wikipage – 管理扩展框架 – 我的程序应该在.NET 3.5上工作,我不想单独添加任何其他框架我想自己写我的插件系统.所以这个解决方案是没有问题的.
> 3)Microsoft提供:http://msdn.microsoft.com/en-us/library/system.addin.aspx,但根据我读过的几篇文章是非常复杂的.
> 4)插件的不同AppDomains.根据Marc Gravell(Usage of AppDomain in C#)的不同AppDomains允许隔离.卸载插件会很容易.性能负载是什么?我需要非常频繁地调用插件的方法(例如绘制对象).

>使用应用程序域 – http://msdn.microsoft.com/en-us/library/yb506139.aspx
> A few tutorials on java2s.com

你能不能评论我的发现?新方法也欢迎!谢谢!

解决方法

您可以定义插件必须实现的公共接口.然后使用反射,您可以扫描“plugin”文件夹以实现该接口的任何类,然后创建该类的实例.

从你的代码只是在界面上工作,并调用所需的方法.关于崩溃,总是确保对“plugin”接口的调用总是封装在try / catch块中.如果发生异常,您可以随时处理该插件

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读