在List< T>中使用参数System.Type T
假设我有一个功能:
public static IList GetAllItems(System.Type T)
{
XmlSerializer deSerializer = new XmlSerializer(T);
TextReader tr = new StreamReader(GetPathBasedOnType(T));
IList items = (IList) deSerializer.Deserialize(tr);
tr.Close();
return items;
}
为了检索文章列表,我想打电话给GetAllItems(typeof(Article))
而不是GetAllItems(typeof(List<Article>))
但仍然返回一个列表。
问题:如何在不更改函数声明/原型的情况下,在调用此函数时避免不必要的List<>
部分?
也就是说,我正在寻找这样的东西:
public static IList GetAllItems(System.Type T)
{
/* DOES NOT WORK: Note new List<T> that I want to have */
XmlSerializer deSerializer = new XmlSerializer(List<T>);
TextReader tr = new StreamReader(GetPathBasedOnType(T));
IList items = (IList) deSerializer.Deserialize(tr);
tr.Close();
return items;
}
没有找到相关结果
已邀请:
2 个回复
孤捷侩
对于这样的事情:
这将检查传入的类型;如果它是
那么它将被未经修改地使用。否则,将使用适当的
类型。 换句话说,如果你传入
那么T将变为
。但如果你传入
那么T将留下
。
靛新比比催
你现在打电话给
。 另外,请考虑使用DataContractSerializer而不是XmlSerializer。