C#界面破损,ABI

前端之家收集整理的这篇文章主要介绍了C#界面破损,ABI前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我们在程序集A.dll的版本1中有类X:
class X {
    SomeType Property { set; get; }
}

然后在程序集A.dll的版本2中:

class X {
    SomeType Property { set; get; }
    SomeType OtherProperty { set; get; }
}

现在假设我们有一个第二个汇编B.dll加载A.dll并使用X.添加属性OtherProperty会打破ABI吗? B.dll会不会使用A.dll / X?如果没有,声明的顺序会有什么区别吗?如果属性是虚拟的,是否有所作为?

我想我真的在问:ABI的一般规则是什么?我知道在发布界面之后更改界面是件坏事,但我真的希望能够在某些实例中添加属性,而无需添加子类.

解决方法

添加属性应该很好.

一个会破坏的情况是,例如,添加一些自动编号的枚举中间的东西.例如,如果您的库中有此代码

enum Foo
{
   Bar,Qux
}

并将其更改为:

enum Foo
{
   Bar,Baz,Qux
}

那么你还需要重新编译这样的代码

if (foo == Foo.Qux)
{
    //  ...
}
原文链接:https://www.f2er.com/csharp/95802.html

猜你在找的C#相关文章