当前位置: 首页 > news >正文

C#开发的OpenRA动态加载插件DLL里的类实现

C#开发的OpenRA动态加载插件DLL里的类实现

由于这款游戏的设计是为了开源设计,

并且可以让不同个人或团体实现自己的游戏,

那么每个人实现的代码是不一样的,算法也是不一样的。

并且可能也拿不到代码一起编译生成一套运行的代码。

这时候,就要考虑使用动态加载类的功能。

意思就是说,每个类定义一定的接口,然后把这些类写在不同的DLL里,

只有当这个DLL加载成功之后,才能创建这个类实例。

要实现上述的目的,就需要先加载DLL的程序集信息,这个在前面的文章里有讨论过。

这里再来说一下,它是通过类ObjectCreator的构造函数来实现加载整个程序集,

然后生成程序集和命名空间数组:

readonly (Assembly Assembly, string Namespace)[] assemblies;

然后通过类名称去assemblies查找。

public Type FindType(string className)函数就是实现通过类名称来查找到类。

当找到类型信息之后,就是实现创建了,调用下面的函数:

public object CreateBasic(Type type)

并且游戏里有很多资源类型的文件,不同的文件采用读取算法不一样,

所以实现的代码也不一样&#

http://www.lryc.cn/news/7282.html

相关文章:

  • 网站代理是什么?有什么需要注意的?
  • 动态库和静态库的区别
  • C/C++路径去除前缀
  • Vue2之Vue-cli应用及组件基础认识
  • C 学习笔记 —— 声明、定义、初始化
  • 机械狗控制算法
  • 向量与矩阵 导数和偏导数 特征值与特征向量 概率分布 期望方差 相关系数
  • 记录--前端实现登录拼图验证
  • 【Go语言基础】Go语言中的map集合详细使用(附带源码)
  • C++11 lambda
  • 【新】华为OD机试 - 分苹果(Python)
  • Python 模块
  • gdb调试功能从零到会(Linux详解)
  • 【C语言学习笔记】:数组、指针相关面试题
  • go语言环境配置 项目启动
  • Springboot 使用插件 自动生成Mock单元测试 Squaretest
  • 「JVM 执行引擎」栈架构的字节码的解释执行引擎
  • SSM项目-商城后台管理系统
  • 什么是装运单IFTMIN?
  • 深度负反馈
  • 【每日随笔】手指训练 ( 产品需求探索、技术无关 | 手指训练作用 | 哪些人需要手指训练 | 手指操 | 手指康复训练器材 )
  • Apple Safari 16.3 - macOS 专属免费浏览器 (独立安装包免费下载)
  • 【java】Spring Boot --Spring Boot 集成 MyBatis
  • python正则表达式
  • 【C++】二叉树的非递归遍历
  • Linux——线程同步(条件变量、POSIX信号量)和线程池
  • leaflet 上传CSV文件,导出geojson格式文件(064)
  • Java内部类
  • Centos系统里运行java的jar包
  • 招标采购流程的电子招标采购,是管理复杂供应链和多层供应商的高效方式。