2012-10-15 36 views
4

我们正在将一个自定义序列化工具放入我们的项目中,并且正在遇到需要通过可用作其“身份”的同义词的原始值类型来唯一标识每个对象的需求。价值需要没有意义或组织,只是它至少在序列化例程期间是唯一的和持久的。理想情况下.net将在内部维护一个唯一且持久的对象ID,我们可以将其存储为对象的ID。我知道每个对象都有一个GetHashCode方法,但我们对该值的全局唯一性没有信心。访问这种ID的另一个标准是该方法需要非常高效。是否有可能获得.net对象的'内存地址'的等价物?

我看过GetHashCode,垃圾收集器和编组思想,还没有达到任何坚实的。

回答

4

您正在寻找ObjectIDGenerator class,它完全符合您的要求。

+0

这是基于对象>整数字典吗? –

+0

实际上它似乎是基于一个Hashtable,这是否意味着对象的'GetHashCode'方法对ID唯一性负有根本责任? –

+0

进一步研究,根据http://stackoverflow.com/questions/7789430/objectidgenerator-implementation'ObjectIDGenerator'使用'RuntimeHelpers.GetHashCode(Object)'方法,它通过http://msdn.microsoft.com/en -us/library/system.runtime.serialization.objectidgenerator.aspx使用'HashTable',然后通过http://msdn.microsoft.com/en-us/library/system.runtime.serialization.objectidgenerator.aspx使用'Object.GetHashCode'方法本身由http://stackoverflow.com/questions/7458139/net-is-type-gethashcode-guaranteed-to-be-unique不一定是唯一的。 –

相关问题