У меня есть словарь типов (Словарь) с пользовательским сопоставлением, потому что мы хотим хранить отношения между двумя заданными типами (для шаблона MVVM), и мне нужна помощь, способная получить способ получить пользовательский EqualityComparer для работы.EqualityComparer <Type> GetHashCode и Equals
Выполнение некоторых исследований Я обнаружил, что метод GetHashCode вызывается перед методом Equals, как я могу получить хэш-коды правильно ?, ожидаемое поведение это, если я попытаюсь получить «квадрат» из моего словаря, и он имеет а «GeometricShape» уже в ней, она возвращает значение «GeometricShape», я не могу найти способ хэширования это таким образом, что я дает ожидаемый результат
public class DictionaryComparer : EqualityComparer<Type>
{
public override bool Equals(Type x, Type y)
{
return x.IsAssignableFromType(y);
}
public override int GetHashCode(Type obj)
{
return obj.GetHashCode();
}
}
Этот вопрос нуждается в уточнении. Вы пытаетесь сказать словарю, что если вы получаете доступ к ключу X (который не находится в словаре) и имеет ключ X ', он должен вернуть значение для более позднего? Если да, знаете ли вы, что вы не сможете добавлять ключи, которые могут быть назначены другому ключу уже в словаре? –
У меня есть чувство (хотя я могу ошибаться), что вы пытаетесь использовать неправильный инструмент для работы. Можете ли вы объяснить, что вы пытаетесь достичь с этим? –
MVVM и словари. Это запах кода. Сначала я предложил вам переключиться на KeyedCollections или полностью удалить нужную коллекцию. Что касается того, что вы пытаетесь приравнять ... совсем не уверен. – Will