我有字典,讓我回來的方法根據傳入的值定義爲這樣:比較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