2012-10-15 3 views
4

우리는 프로젝트에 사용자 지정 직렬화 도구를 사용하고 있으며 각 개체를 '신원'의 동의어로 사용할 수있는 원시 값 형식으로 고유하게 식별해야 할 필요성을 느끼고 있습니다. 값은 아무런 의미 나 구성을 필요로하지 않으며 최소한 직렬화 루틴의 지속 기간 동안 고유하고 일관성이 있어야합니다. 이상적으로 .net 내부적으로 우리가 개체의 ID로 저장할 수있는 고유하고 영구적 인 개체 ID를 유지했을 것입니다. 모든 객체에는 GetHashCode 메서드가 있지만 모든 값의 전역 고유성에는 확신 할 수 없습니다. 그러한 ID에 액세스하는 또 다른 기준은이 방법이 매우 효율적이어야한다는 것입니다..net Object의 '메모리 주소'와 동일한 값을 얻을 수 있습니까?

가비지 컬렉터이자 아이디어를위한 마샬링 인 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에 의해 반드시 고유 한 것은 아닙니다. –