首页 > 如果新版dll里的一个成员变量从本来的field 变为了property,改怎么办?

如果新版dll里的一个成员变量从本来的field 变为了property,改怎么办?

最近有一个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已经不同了。 如果一定要做又没有别的变量或者方法可以代替的话,可以找找怎么用反射去取出来,不过这个方法很没有效率,不建议。

【热门文章】
【热门文章】