【发布时间】:2010-11-08 22:41:34
【问题描述】:
假设我有一个函数:
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;
}
【问题讨论】:
-
我会去更改方法签名以使用泛型,但如果那不是一个选项 cdhowie 的答案就是你需要的。
标签: c# asp.net xml-serialization xml-deserialization generic-list