我想採取任何對象,並獲取代表該對象的GUID。對象GUID/UUID
我知道這需要很多東西。我正在尋找適合常見應用程序的足夠好的解決方案。
我的具體用例是用於緩存,我想知道用於創建我緩存的對象過去已經創建了一個。會有2種不同類型的對象。每種類型只包含公共屬性,並且可能包含一個列表/可自定義的列表。
假設對象可以是序列化我的第一個想法是把它序列化到JSON(通過本地jsonserlizer或newtonsoft),然後採取JSON字符串,將其轉換成5 UUID的版本在這裏要點How can I generate a GUID for a string?
儘可能詳細我的第二種方法,如果它不是可序列化的(例如包含字典),將使用公共屬性上的反射來生成某種唯一字符串,然後將其轉換爲uuid版本5.
這兩種方法都使用uuid版本5採取一個字符串來引導。有沒有一個經過驗證的c#類可以生成有效的uuid 5 guid?要點看起來不錯,但要確定。
我正在考慮讓c#命名空間和類型名稱成爲uuid的命名空間5.是否有效地使用命名空間?
我的第一種方法足以滿足我的簡單用例,但我想探索第二種方法,因爲它更靈活。
如果創建guid不能保證合理的唯一性,它應該拋出一個錯誤。超級複雜的物體肯定會失敗。如果使用反射,我怎麼會知道這種情況?
我正在尋找新的方法或關注/實現第二種方法。
你的意思是被稱爲*哈希什麼*。例如,您可以使用MD5。 – Robert
你不是在找'GetHashCode'嗎? https://msdn.microsoft.com/en-us/library/system.object.gethashcode(v=vs.110).aspx –
@tomas哈希代碼不保證是唯一的,只是希望無衝突。它們也特定於該對象類型 – ParoX