我有字典,让我回来的方法根据传入的值定义为这样:比较IEnumerable类型的<T>
Dictionary<Type, IXmlWriterConverter>
我现在补充说,其中有钥匙/类型集的新功能到IEnumerable,到目前为止这么好。 但是,当我执行我的单元测试与包含两个数据表的列表,但字典无法找到密钥,例如我的类型转换不同。
这是为什么?什么是解决我的问题的正确尝试?
编辑:对不起这里是被请求代码;-)
函数生成该testvalues:
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。我被告知发生这种情况是因为我将值作为对象传入。
也许你应该发布相关的代码,所以其他人可以真正看到发生了什么... – sloth 2010-09-14 12:43:17
你可以提供一些示例代码? – LukeH 2010-09-14 12:43:31
@dkson也许我应该这样做在第一次去..对不起,因为懒惰;-) – Mark 2010-09-14 12:58:32