У меня есть словарь, который возвращает мне метод в соответствии с переданным значением. Определяется следующим образом:
Dictionary<Type, IXmlWriterConverter>
Теперь я добавил новую функцию, для которой Key / type установлен в IEnumerable,Все идет нормально.Но когда я выполняю свой модульный тест со списком, содержащим две таблицы данных, но словарь не может найти ключ, например, преобразование моего типа отличается.
Почему это так?И какова будет правильная попытка решить мою проблему?
Редактировать: Извините, здесь запрошенный код; -)
Функция, которая генерирует значения теста:
public IEnumerable<DataTable> CreateTestDataTableList()
{
var resultDataTable = new List<DataTable>();
resultDataTable.Add(CreateTestTable("testTable1", 2));
resultDataTable.Add(CreateTestTable("testTable2", 3));
return resultDataTable;
}
Функция, вызываемая модульным тестом:
public void Write(XmlWriter xmlWriter, object value)
{
...
converter = FindConverter(value.GetType());
}
Функция проверки словаря:
public IXmlWriterConverter FindConverter(Type type)
{
if(Converters.ContainsKey(type))
{
return Converters[type];
}
return null;
}
2.Edit:
Код, который добавляет значения в словарь:
public void Add(IXmlWriterConverter xmlWriterConverter)
{
if(Converters.ContainsKey(xmlWriterConverter.InputType))
{
Remove(xmlWriterConverter);
}
Converters.Add(xmlWriterConverter.InputType, xmlWriterConverter);
}
InputType является свойством только для чтения (get) конвертера.Я проверил тип, добавленный в словарь, и он был зарегистрирован как IEnumerable, однако, когда я проверял typeof при передаче моего списка, тип был List, а не IEnumerable.Мне сказали, что это происходит, потому что я передаю значения как объект.