C# class 向后兼容

C# class backward compatibility

我有一个 NuGet 包被一些项目内部使用。现在,在重构项目时,我发现有几个 class 名称不当。我想知道 C# 中是否有任何方法可以更改 class 名称而不破坏任何内容。

无法在不破坏其他人代码的情况下重命名标识符。您可以做的最好的事情是保留 clAssNaME 标识符,提供新的 ClassName 并将 clAssNaME 标记为已弃用。发布带有记录和突出显示的变更日志的新版本。

当您确信大多数人都能修复他们的代码时,删除clAssNaME

你做什么取决于变化的程度。如果更改名称的类型不是简单类型(即有很多行为)或在整个包中使用,则创建该类型的副本可能非常困难,因为您还必须确保代码可以使用任何一种类型(无论如何有一段时间)。

一个更简单的解决方案可能是对您的包进行分支并在新分支中增加主版本号。在 "new" 分支中:更新类型名称,记录重大更改,并将发布作为新版本推送。然后您可以维护这两个分支,直到您认为适合停止 "older" 分支上的工作。在 "older" 分支中,您还可以将类型标记为已弃用,并警告它们在未来的版本中将更改名称。