在 C# 中使用 XML 序列化时,我使用这样的代码:
public MyObject LoadData()
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(MyObject));
using (TextReader reader = new StreamReader(settingsFileName))
{
return (MyObject)xmlSerializer.Deserialize(reader);
}
}
(以及类似的反序列化代码)。
它需要转换并且不是很好。有没有办法直接在 .NET Framework 中使用带有序列化的泛型?也就是说要写这样的东西:
public MyObject LoadData()
{
// Generics here.
XmlSerializer<MyObject> xmlSerializer = new XmlSerializer();
using (TextReader reader = new StreamReader(settingsFileName))
{
// No casts nevermore.
return xmlSerializer.Deserialize(reader);
}
}
最佳答案
@Oded 的补充,您可以制作 method Generic还有:
public T ConvertXml<T>(string xml)
{
var serializer = new XmlSerializer(typeof(T));
return (T)serializer.Deserialize(new StringReader(xml));
}
这样你就不需要使整个类通用,你可以像这样使用它:
var result = ConvertXml<MyObject>(source);
关于c# - 将泛型与 XmlSerializer 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2670138/