我想修改一个开源的wpf库,但随着捐赠库的改进而更新它:如何

本文关键字:如何 更新 修改 wpf 开源 一个 | 更新日期: 2023-09-27 17:49:16

我打算扩展&alter一个开源库(LIB_A),它本身是由其他库组成的,这些库已经被修改为它的发布。
我的修改可能要对所有的库进行。

当添加新功能/消除错误时,使LIB_A随后导入到我的库中尽可能轻松,而不产生集成问题的最佳方法是什么?

我想让我的库子类我想改变的类,并覆盖我想改变的方法,但不能弄清楚这是否可能。这里的理由是,我可能只修改每个类中的两个方法,这样当LIB_A错误被修复时,如果它们不在我修改的方法中,就不会发生冲突,我可以免费利用更新。如果它们在同一个方法中,那就没有办法了,我接受这一点。

如果我只是复制整个LIB_A,那么我将不得不费力地遍历每个文件以查看更改了什么,然后合并更新。一定有既定的方法来做这件事吧?

具有相关签入和diff行为的源存储库(本地或其他)是可接受的方法吗?

感谢

编辑:这个问题是问完全相同的事情…

我想修改一个开源的wpf库,但随着捐赠库的改进而更新它:如何

你说得对。如果你可以通过子类化来实现,那么这绝对是最简单的方法。

问题是,你并不总是可以通过子类化做到这一点——例如,当你需要改变一个密封或私有方法,改变其他非虚拟方法或属性等。在这种情况下,除了(1)复制代码并创建自己的版本,(2)修改代码,使这些方法/属性是虚拟的和公共的——但要确保它不会破坏其他地方的任何东西。

即使你可以子类化它,并且新版本的库没有触及你覆盖的几个方法,你仍然必须再次完全测试你的更改,因为你的新代码可能依赖于新版本改变的某些实现细节。当然,库的供应商会为新版本修改这几个方法,但是您的版本不会改变。因此,最好的方法是将供应商的新版本的方法与旧版本进行比较,以检测您是否也需要在自己的版本中更改某些内容。