假设我有一个继承自C#中B类的A类.B类在其上有一个名为Checksum的属性,当在运行时调用时,它将计算A类实例上所有属性的校验和(所使用的特殊校验和算法并不重要,可能来自BCL).
重要的是,校验和算法必须忽略校验和属性,否则在稍后验证时将失败(因为校验和值将更改).
所以,据我所知,有两种选择:
1)使用反射迭代对象的所有公共属性,连接成一个字符串和校验和.
2)假设对象只是一堆连续的记忆地址,并将其视为字节数组和校验和.
1 - 听起来很慢2 - 听起来很难,因为我不确定你是如何忽略代表校验和本身的字符串,或者如何处理对其他对象的引用.
有没有人比1更好的想法听起来更好的这两个解决方案?