개체를 가져 와서 해당 개체를 나타내는 GUID를 가져 오려고합니다.개체를 GUID/UUID
나는 그것이 많은 것을 수반한다는 것을 안다. 나는 일반적인 어플리케이션을위한 충분한 솔루션을 찾고있다.
내 특정 사용 사례는 캐싱을위한 것이며, 캐싱 할 대상을 만드는 데 사용 된 개체가 이미 과거에 만들었 음을 알고 싶습니다. 2 가지 유형의 객체가 있습니다. 각 유형은 공용 속성 만 포함하고 list/ienumable을 포함 할 수 있습니다.
객체를 가정 내 첫번째 생각은 (기본 jsonserlizer 또는 newtonsoft를 통해) JSON으로 직렬화하고 JSON 문자열을 여기 요지 How can I generate a GUID for a string?
의 상세한 UUID는 버전 5로 그 변환하는 것이었다 직렬화 될 수있다두 번째 방법은 직렬화 할 수없는 경우 (예 : 사전 포함) 공용 속성에 반사를 사용하여 고유 한 문자열을 생성 한 다음이를 UUID 버전 5로 변환하는 것입니다.
두 가지 방법 모두 uuid 버전을 사용합니다 5 guid로 문자열을 가져옵니다. 유효한 uuid 5 guids를 만드는 입증 된 C# 클래스가 있습니까? 요점은 좋아 보이지만 확실하길 원합니다.
나는 C# 네임 스페이스를 만들고 유형 이름을 uuid 5의 네임 스페이스로 만들려고했다. 네임 스페이스를 올바르게 사용하고 있는가?
내 첫 번째 접근 방식은 내 간단한 사용 사례에 충분하지만 두 번째 접근 방식을보다 유연하게 탐색하고자했습니다.
guid를 만들면 합당한 고유성이 보장 될 수 없으므로 오류가 발생합니다. 확실히 복잡한 복잡한 객체는 실패 할 것입니다. 리플렉션을 사용하는 경우 그 사실을 어떻게 알 수 있습니까?
두 번째 방법에 대한 새로운 접근 방식이나 우려 사항/구현 방법을 찾고 있습니다.
당신이 *는 * 해시라고 무엇을 의미. 예를 들어, MD5를 사용할 수 있습니다. – Robert
'GetHashCode'를 찾고 계시지 않습니까? https://msdn.microsoft.com/en-us/library/system.object.gethashcode(v=vs.110).aspx –
@tomas 해시 코드가 고유 한 것으로 보장되지는 않으며 충돌이 발생하지 않을 것입니다. 또한 해당 객체 유형에만 해당됩니다. – ParoX