Если я хочу использовать объекты в качестве ключей для Dictionary, какие методы мне нужно переопределить, чтобы сравнить их определенным образом?
Скажем, у меня есть класс, который имеет свойства:
class Foo {
    public string Name { get; set; }
    public int FooID { get; set; }
    // elided
} 
И я хочу создать:
Dictionary<Foo, List<Stuff>>
Я хочу, чтобы объекты Foo с тем же FooID считались одной и той же группой. Какие методы мне нужно переопределить в классе Foo?
Подводя итог: я хочу классифицировать объекты Stuff в списки, сгруппированные по объектам Foo. Stuff объекты будут иметь FooID, чтобы связать их с их категорией.