c# - 将泛型与 XmlSerializer 结合使用

标签 c# generics oop xml-serialization xmlserializer

在 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/

相关文章:

c# - 如何在 .NET Core 中创建动画 gif

c# - 在抽象工厂模式中使用 IoC?

swift - 如何为通用函数过滤或有多个选项?

ios - swift 无法转换类型的值

c# - 从 asp.net 中的文本框中获取希伯来语字符

c# - 如何在 Windows 服务中使用 Quartz.Net 安排任务?

c# - 避免通用参数

java - 面向对象编程 - 有关设计和访问相关数据的问题

C++ 对象创建

c++ - 如何在不同的类中使用 QNetworkAccessManager?类之间重要数据的一般共享?