我有一个复杂的对象来深度复制(许多数组,对象,指针,继承层的层,各种类型的数百个成员等),并通过Delphi的Assign方法重新创建它是没有效率的,而且很可能太复杂了.
我一直在看,Rtti它似乎是一个很好的选择,但到目前为止,我无法涵盖所有可能的情况.我不想浪费那么多时间,希望找到一个好的,简单的例子.不幸的是,我还找不到一个.到目前为止我一直在做的是,TRttiField使用loop(TRttiType.GetFields())遍历对象中的所有内容,并尝试使用基于TTypeKind值的指针来分配所有内容.(tkPointer,tkClass,tkClassRef ...)
我找到了一个JSON /编组示例,但它无法深度复制我的复杂对象; 我收到了错误;
内部:目前不支持类型tkPointer
http://www.yanniel.info/2012/02/deep-copy-clone-object-delphi.html
Delphi中有什么东西接近C#二进制序列化并使用内存流创建深层副本.或者,您是否知道Delphi使用RTTI或JSON /编组进行深度复制时可以使用最复杂的对象?
简而言之,你不能使用rtti来简化深度复制(这将比使用经典的赋值覆盖更复杂,更容易出错)
所以你需要更接近TPersistent及其子对象并正确覆盖Assign,AssignTo方法(没有更简单的方法)
| 归档时间: |
|
| 查看次数: |
3182 次 |
| 最近记录: |