Generierung eindeudiger ID (Hash) aus einem Objekt
-
Hallo Leute,
ich habe Objekte vom Type "Foo". Jedes dieser Objekte hat einen eindeutige MyId (String) und einen MyType (Type).
class Foo { string MyId {get;} Type MyType{get;} ulong GetHashID{ get{......}} }
nun will ich über ein Property "GetHashID" zu diesem Objekt eine "eindeudige" ID haben. Die ID soll sich nich Instanz beziehen, sondern sich eindeudig aus den Informationen der Instanz , sprich (MyId,MyType) behziehen.
GRüße und "guten Morgen";)
-
Eine Hash muß nicht eindeutig sein (Stichwort Hash-Kollision), ist also als ID eine schlechte Wahl.
Wenn Du eine eindeutige ID brauchst dann nimm eine Guid, denn genau dafür wurden Guids entwickelt.
-
NullbockException schrieb:
Hallo Leute,
ich habe Objekte vom Type "Foo". Jedes dieser Objekte hat einen eindeutige MyId (String) und einen MyType (Type).
class Foo { string MyId {get;} Type MyType{get;} ulong GetHashID{ get{......}} }
nun will ich über ein Property "GetHashID" zu diesem Objekt eine "eindeudige" ID haben. Die ID soll sich nich Instanz beziehen, sondern sich eindeudig aus den Informationen der Instanz , sprich (MyId,MyType) behziehen.
GRüße und "guten Morgen";)
Wie waere es wenn du die Built-In Methode GetHashCode ueberschreibst. Etwa so:
class Foo { string MyId {get;} Type MyType{get;} public override int GetHashCode() { return MyId.GetHashCode() ^ MyType.GetHashCode(); } }
-
Warum soll sich die ID denn auf MyId und MyType beziehen? Weil für eindeutige ID wäre eine GUID vielleicht sinnvoller.