C#开发的OpenRA动态加载插件DLL里的类实现
Posted caimouse
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)
并且游戏里有很多资源类型的文件,不同的文件采用读取算法不一样,
所以实现的代码也不一样&#
以上是关于C#开发的OpenRA动态加载插件DLL里的类实现的主要内容,如果未能解决你的问题,请参考以下文章