You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

公共API中属性移至基类是否为破坏性变更?跨版本运行报错求助

.NET跨版本动态加载第三方程序集的成员绑定问题

场景说明

我使用的第三方.NET Framework程序集存在两个版本,我的代码基于.NET 8,编译时依赖V2.0.0版本,运行时动态加载对应版本。

V2.0.0版本代码

public class A { public int P2 { get; set; } }
public class B : A { public int P1 { get; set; } }

V1.0.0版本实际代码(最初误判,后修正)

public class B { public int P1 { get; set; } public int P2 { get; set;} }

我的调用代码

public static void Main() {
    var b = new B();
    b.P2 = 3;
}

问题与疑问

运行时加载V1.0.0版本时,访问b.P2操作失败。我原本认为P2是B的公共API,其定义位置不应该影响调用,但实际编译后的代码会绑定成员定义所在的类——即使通过派生类访问。

目前如果针对不同版本分别编译,会引发反向兼容问题,是否存在无需维护两个应用版本的解决方案?

另外查阅资料得知:将成员从基类移至派生类属于破坏性变更,而将成员移至基类、添加无抽象/虚成员的基类是兼容变更。那如果我编译时基于V1.0.0版本,运行时加载V2.0.0版本是否可以正常工作?

内容的提问来源于stack exchange,提问作者adrianm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 17:43:23