Я храню элементы в строго типизированном IDictionary<TKey, TValue>
, так что значение также представляет ключ:
public class MyObject
{
public string Name { get; private set; }
public SectionId Section { get; private set; }
public MyObject(SectionId section, string name)
{
Section = section;
Name = name;
}
public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj.GetType() != typeof(MyObject)) return false;
return Equals((MyObject)obj);
}
public override int GetHashCode()
{
unchecked
{
return (Name.ToLower().GetHashCode() * 397) ^ Section.GetHashCode();
}
}
}
В моем уровне презентации мне нужно перебрать этот словарь, добавив каждый элемент в элемент управления ListBox. Мне трудно разобраться, как преобразовать MyObject (который также действует как ключ) в строку, которую элемент управления ListBox может использовать в качестве значения. Должен ли я просто сделать явный вызов MyObject.GetHashCode () следующим образом:
MyListBox.Add(new ListItem(myObject.Name, myObject.GetHashCode())