我需要更改组件中的功能。当您收到“您无法覆盖此”消息,或者您需要更改私有方法中的代码(“基类中不存在该方法”消息),导致组件无法下降时,您该怎么办?
如果我遇到这个问题,
- 我首先尝试从组件或其 CustomXXX 祖先继承,看看是否可以解决问题。如果没有的话,
- 我更深入,即尝试拦截传入的消息。这可以动态完成。如果事实证明这太深了,因为必须构建的代码太广泛,或者如果我仍然必须访问我无法访问的项目,
- 我尝试黑客。一种技巧是将组件和依赖代码复制到具有不同名称的新单元,重命名组件并修改需要修改的内容。
- 有时我只需要重做一两个方法就可以使我的新行为成为可能。
永远不要忘记给单元一个不同的名称,也给组件一个不同的名称(可能继承自原始组件或其祖先之一,因此它们保留在同一层次结构中)。做never修改原始源代码,然后重新编译VCL。这是维护的噩梦。
我不喜欢中介类,即与原始类具有相同名称但行为不同、继承自原始类的类。它们的功能取决于 use 子句中包含的顺序,这对我来说似乎很不稳定。我不能推荐这样做。
但我做什么很大程度上取决于问题。我认为人们不能(或应该)给出涵盖所有情况的一揽子建议。
但我的主要建议是:不修改原来的单位,总是把new code in a new unit并使用新班级名称。这样原始版本和修改版本就可以和平共存,在 IDE 中也是如此。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)