c# - 为什么在 c# 中反序列化我的 packages.config 会返回空值?

标签 c# xml deserialization

我正在尝试在 C# 中反序列化我的 packages.config 文件,但我返回的集合始终为空。如果我的 xml 文件由单个属性集合组成,是否需要一些特殊的东西?

[Serializable()]
[System.Xml.Serialization.XmlTypeAttribute()]
public class Package
{
    [System.Xml.Serialization.XmlAttribute("id")]
    public string Id {get;set;}
    [System.Xml.Serialization.XmlAttribute("version")]
    public string Version {get;set;}
}

[Serializable()]
[System.Xml.Serialization.XmlRoot("packages")]
public class PackageCollection
{
    [System.Xml.Serialization.XmlArrayItem("package", typeof(Package))]
    public Package[] Packages {get;set;}    
}


void Main()
{
    var path = "C:\D\packages.config";
    var serializer  = new System.Xml.Serialization.XmlSerializer(typeof(PackageCollection), new System.Xml.Serialization.XmlRootAttribute("packages"));
    StreamReader reader = new StreamReader(file);
    var packages2 = (PackageCollection)serializer.Deserialize(reader);
    reader.Close();
}

我的 packages.config 在哪里

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
  <package id="Autofac" version="3.3.1" targetFramework="net45" /> 
  <package id="Microsoft.AspNet.WebApi.Client" version="4.0.20710.0" targetFramework="net45" /> 
  <package id="Microsoft.AspNet.WebApi.Core" version="4.0.20710.0" targetFramework="net45" /> 
  <package id="Microsoft.AspNet.WebApi.Tracing" version="4.0.30506" targetFramework="net45" /> 
  <package id="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net45" /> 
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" /> 
  <package id="Newtonsoft.Json" version="4.5.11" targetFramework="net45" /> 
</packages> 

最佳答案

在这种情况下使用 XmlElement:

[Serializable()]
[System.Xml.Serialization.XmlRoot("packages")]
public class PackageCollection
{
    [System.Xml.Serialization.XmlElement("package", typeof(Package))]
    public Package[] Packages { get; set; }
}

关于c# - 为什么在 c# 中反序列化我的 packages.config 会返回空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25676082/

相关文章:

c# - VS2010项目无法添加本地SQL数据库?

c# - 为最简单的 xml 文件编写最简单的 XML 反序列化类。如何避免嵌套?在根目录反序列化?

java - 使用 ObjectMapper 反序列化对象时将驼峰命名法转换为下划线

java - 在 Serialized 接口(interface)下重写 readObject() 和 writeObject() 方法如何在实际开发中找到应用?

C#为什么一个方法的运行时间不一样?

c# - 看似第 22 条军规关于 : developing ARM solutions on a non-ARM device

c# - 重复更新导致跟踪错误

java - android http 请求的未知主机异常应返回 XML

c# - 将自定义对象序列化为 XML

serialization - Protobuf 将序列化消息串联到一个文件中