Ощущаю себя идиотом.
"Dictionary<(Of <(TKey, TValue>)>) требует реализации проверки равенства, что позволит определять, совпадают ли ключи. Можно задать реализацию универсального интерфейса IEqualityComparer<(Of <(T>)>), используя конструктор, принимающий параметр comparer; если реализация не задана, используется универсальный компаратор по умолчанию, проверяющий на равенство (EqualityComparer<(Of <(T>)>)..::.Default). Если тип TKey реализует универсальный интерфейс System..::.IEquatable<(Of <(T>)>), компаратор по умолчанию, проверяющий на равенство, использует эту реализацию. "
(с)
MSDN Если это так, то почему при ключе:
class AccountType : IEquatable
{
Int32 code;
String name;
//<.....>//
public bool Equals(AccountType other)
{
return this.code.Equals(other.code);
}
public override bool Equals(object obj)
{
if (obj.GetType() == typeof(AccountType))
{
return Equals(obj as AccountType);
}
else
{
return false;
}
}
}
Если я ТОЧНО знаю, что в коллекции содержится AccountType { code=1;name="";}, и передаю туда (пробовал два варианта
AccountType { code=1;name="";} или AccountType { code=1;name="ЖКУ";} - ключ не находится.
Таки не понятно, что оно от меня ещё хочет?
P.S. Проверка выполняется из тестового проекта, под Debug теста, если это имеет значение.