最近有一个c#的项目,在一个上层软件平台上做一个插件。 上层软件有v1, v2两个版本,分别提供DLLapi v1 和 v2。
现在发现,v1, v2 的dll除了以下这个差异,其他都一样。
in dll of v1: protected string name;
in dll r2: protected string name{ get ; }
在我的代码里会这么用 this.name, 如果我用v2的dll进行编译,然后拿编译后的exe在v1平台上运行,会提示找不到 get_name方法; 如果我用v1的dll进行编译,然后拿编译后的exe在v2平台上运行,会提示找不到name属性;
请问我该如果用一套代码同时支持v1,v2两个平台呢? 难道我一定要建两个c# project, 分别reference 不同版本的dll,然后把分别生成的exe在相应的平台上运行吗?
多谢
DLL定义里是 protected string name{ get ; }的话说明源代码里专门定义了get的方法体,本质上和之前的Field已经不同了。 如果一定要做又没有别的变量或者方法可以代替的话,可以找找怎么用反射去取出来,不过这个方法很没有效率,不建议。