2012-11-15 65 views
0

在C#中,是否可以從哈希碼創建一個新的SqlHierarchyId?我在網頁上創建了一個樹形視圖,我認爲能夠將哈希代碼從服務器傳遞迴客戶端返回到服務器比傳遞SqlHierarchyId的字符串表示要有點整齊。我知道一旦我從SQL中取出SqlHierarchyId,我可以調用SqlHierarchyId.GetHashCode()來獲取哈希代碼,但我無法弄清楚如何從該哈希代碼創建新的SqlHierarchyId。任何幫助,將不勝感激。是否可以從散列碼創建SqlHierarchyId?

+0

GetHashCode()返回哈希碼(!),而不是對象的唯一表示,而不是某種對象標識符。 –

回答

1

無法將散列映射回SqlHierarchyId並獲得您所需的行爲。散列碼並不意味着是唯一的,多於一個SqlHierarchyId可能會返回相同的散列碼。

在維基百科上有很高級別的哈希描述。 http://en.wikipedia.org/wiki/Hash_function。注意頁面上的第一張圖片說明了哈希碰撞。

除此之外,哈希通常用作單向操作。 SqlHierarchyId上沒有任何可以倒退的方法(並且SqlHierarchyId用自己的實現覆蓋了GetHashCode)。即使查看GetHashCode的實現,我也沒有辦法重新創建SqlHierarchyId的狀態。代碼循環遍歷一個循環中的id和xor'ing值的二進制表示形式(不能倒退)。