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.


Anmelden zum Antworten