更新库时,准确传达任何重大更改非常重要。不幸的是,C# 中有许多不同类型的重大更改,其中一些非常微妙。
最明显的是更改类型或类型成员的名称。
微妙的是像adding a new default parameter这样的东西(二进制兼容性被破坏,但源兼容性被保留),或 renaming a parameter (保持了二进制兼容性,但破坏了源代码兼容性)。
我不确定重命名通用参数。
例如,是否存在这样的情况:
public class Foo<T>
{
public T Bar(){ /* something */ }
}
到
public class Foo<TMoreDescriptive>
{
public TMoreDescriptive Bar(){ /* something */ }
}
库的发布之间可能会破坏消费者?
最佳答案
不,没有这种情况。
更改泛型类型参数的名称并不比更改方法参数的名称更具有破坏性。 According to the C# Programming Guide ,当消费者使用泛型类型参数实例化类时,泛型类型将被替换——除非通过文档或类似 IntelliSense 的功能,否则消费者绝不会给出原始类型参数的名称。
该指南还提到泛型类型参数可通过反射获得 - 这可能是您的消费者能够以编程方式检查名称更改的唯一向量,类似于方法参数。
关于c# - 更改通用参数的名称是一项重大更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58740817/