Generating an identifier for objects so that they can be added to a hashtable I have created
        Posted  
        
            by 
                dukenukem
            
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by dukenukem
        
        
        
        Published on 2012-10-03T18:38:25Z
        Indexed on 
            2012/10/04
            3:37 UTC
        
        
        Read the original article
        Hit count: 146
        
I have a hashtable base class and I am creating different type of hashtable by deriving from it. I only allow it to accept objects that implement my IHashable interface.For example -
class LinearProbingHashTable<T> : HashTableBase<T> where T: IHashable
{
...
...
...
}
interface IHashable
{
    /**
     * Every IHashable implementation should provide an indentfying value for use in generating a hash key.
     */
    int getIdentifier();
}
class Car : IHashable
{
    public String Make { get; set; }
    public String Model { get; set; }
    public String Color { get; set; }
    public int Year { get; set; }
    public int getIdentifier()
    {
        /// ???
    }
}
Can anyone suggest a good method for generating an identifier for the car that can be used by the hash function to place it in the hash table?
I am actually really looking for a general purpose solution to generating an id for any given class. I would like to have a base class for all classes, HashableObject, that implements IHashable and its getIdentifier method. So then I could just derive from HashableObject which would automatically provide an identifier for any instances. Which means I wouldn't have to write a different getIdentifier method for every object I add to the hashtable.
public class HashableObject : IHashable
{
  public int getIdentifier()
  {
    // Looking for code here that would generate an id for any object...
  }
}
public class Dog : HashableObject
{
  // Dont need to implement getIdentifier because the parent class does it for me
}
        © Stack Overflow or respective owner