我有一个方法可以返回一个汽车列表(IEnumerable)..
(适用于 ReturntypesIEnumerable<Car>
和List<Car>
):
public IEnumerable<Car> GetCars(string xml)
{
var myResultList;
XElement doc = XElement.Parse(xml);
myResultList = doc.Descendants().Descendants("dict").Select(
x => new Employee
{
Id = x.Elements("string").ElementAt(0).Value,
Prename = x.Elements("string").ElementAt(1).Value,
Name = x.Elements("string").ElementAt(2).Value,
Initials = x.Elements("string").ElementAt(3).Value
}
);
IEnumerable<Car> enumerable = myResultList;
return enumerable;
//---
//or as a List if it's better?
List<Car> asList = enumerable.ToList();
//then: return asList
}
现在我想让这个方法通用。每个 IEnumerable 类型/或列表类型都应该能够。
像这样的东西 - 那只是伪代码,因为我不知道它是如何工作的;
public IEnumerable<T> GetData(string xml)
{
var myResultList;
//...myResultList.. will be filled here (unnecessary)
IEnumerable<T> enumerable = myResultList;
return enumerable;
//---
//or as a List if it's better?
List<T> asList = enumerable.ToList();
//then: return asList
}
我希望我的问题足够清楚..想象一下你会有一个像House而不是Car的其他类型,但你想对每种类型使用相同的方法。
我怎样才能做到这一点?帮助将不胜感激。
编辑:
添加了填充“myResultsList”的代码
编辑 2:2 XML 应该在相同的方法上工作:
<plist version="1.0">
<dict>
<key>DataType</key>
<string>Employee</string>
<key>8000</key>
<dict>
<key>MitarbeiterNo</key>
<string>8000</string>
<key>Vorname</key>
<string>Walter</string>
<key>Name</key>
<string>Walter Lohner Stans</string>
<key>Initialien</key>
<string>MAL</string>
</dict>
<key>8001</key>
<dict>
<key>MitarbeiterNo</key>
<string>8001</string>
<key>Vorname</key>
<string>Motorrad</string>
<key>Name</key>
<string> Meierskappel</string>
<key>Initialien</key>
<string>MAM</string>
</dict>
<key>8004</key>
<dict>
<key>MitarbeiterNo</key>
<string>8004</string>
<key>Vorname</key>
<string>Hanspeter</string>
<key>Name</key>
<string>Altenbürger AG Horgen</string>
<key>Initialien</key>
<string>FH</string>
</dict>
</dict>
</plist>
和
<plist version="1.0">
<dict>
<key>DataType</key>
<string>Agent</string>
<key>7000</key>
<dict>
<key>AgentNo</key>
<string>7000</string>
<key>Initialien</key>
<string>VW</string>
<key>Namen</key>
<string>Walter Gnos Vertretungen Vevey</string>
</dict>
<key>7001</key>
<dict>
<key>AgentNo</key>
<string>7001</string>
<key>Namen</key>
<string>Miller GmbH Bern</string>
</dict>
<key>7002</key>
<dict>
<key>AgentNo</key>
<string>7002</string>
<key>Initialien</key>
<string>MAL</string>
<key>Namen</key>
<string>Walter Lohner Stans</string>
</dict>
</dict>
</plist>