2012-10-15 35 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不一定是唯一的。 –

相關問題