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

C# 我想修改一个开源wpf库,但随着捐赠者库的改进而更新:如何?,c#,wpf,open-source,merge,C#,Wpf,Open Source,Merge,我打算扩展和修改一个开源库(LIB_A),它本身由其他库组成,这些库在发布时已经过修改。 我可能会对所有的库进行修改 在添加新功能/消除bug的情况下,在不产生集成问题的情况下,让后续将LIB_A导入我的库尽可能轻松的最佳方法是什么 我想让我的库对我想更改的类进行子类化,并重写我想更改的方法,但不知道这是否可行。这里的理由是,我可能只修改每个类中的两个方法,这样当LIB_A bug被修复时,如果它们不在我修改的方法中,就不会发生冲突,并且我可以免费利用更新。如果他们采用相同的方法,那就没有办法了

我打算扩展和修改一个开源库(LIB_A),它本身由其他库组成,这些库在发布时已经过修改。
我可能会对所有的库进行修改

在添加新功能/消除bug的情况下,在不产生集成问题的情况下,让后续将LIB_A导入我的库尽可能轻松的最佳方法是什么

我想让我的库对我想更改的类进行子类化,并重写我想更改的方法,但不知道这是否可行。这里的理由是,我可能只修改每个类中的两个方法,这样当LIB_A bug被修复时,如果它们不在我修改的方法中,就不会发生冲突,并且我可以免费利用更新。如果他们采用相同的方法,那就没有办法了,我接受

如果我只是复制整个库,那么我将不得不费力地使用diff遍历每个文件,以查看更改了什么,然后合并更新。必须有一个既定的方法来做到这一点

源存储库(本地或其他)及其相关的签入和差异行为是否是可接受的方法

谢谢



编辑:问的都是同样的问题。

好吧,你说对了。如果可以通过子类化来实现,那么无论如何这是最简单的方法

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


即使您可以对其进行子类化,并且库的新版本没有涉及您重写的少数方法,您仍然必须重新测试您的更改,因为您的新代码可能取决于新版本更改的某些实现细节。当然,库的供应商会为新版本修改这些方法,但您的版本不会改变。因此,最好的方法是将供应商新版本的重写方法与旧版本进行比较,以检测您是否需要在自己的版本中进行更改。

当然,但我不担心托管或获取源代码;我想知道编写代码的方法,这样对捐赠者库的后续更改就不会破坏我的所有(/太多)修改。这完全取决于更改-你能更具体地说明需要进行的更改种类吗?好吧,我将用我喜欢的行为替换任何/所有库的一些方法;属性将发生变化;LIB_A中的某些方法应该使用不同的对象,这些对象只存在于我的扩展库中,但在其他方面是相同的。。这就是你的意思吗?基本上,LIB_A是我需要的一个很好的开始,但我需要做一些改变。我还想利用LIB_A中的任何后续错误修复。。