XML反序列化器-对象为空

本文关键字:对象 反序列化 XML | 更新日期: 2023-09-27 18:12:47

我想将对象转换为xml和反向。我可以使用以下方法将我的对象序列化为xml文档,没有任何问题:

public static void SaveObjectToXML(T _obj, string fileName)
{
   XmlSerializer ser = new XmlSerializer(typeof(T));
   FileStream str = new FileStream(fileName, FileMode.Create);
   ser.Serialize(str, _obj);
   str.Close();
}

但是使用反序列化器我遇到了一些问题…虽然这个过程没有错误或问题(调用它的方法也是如此),但当我尝试访问任何成员时,问题就开始了。所有成员都为空(访问任何成员的方法也是如此)。下面是代码:

public static T SaveXMLToObject(string fileName)
{
   XmlSerializer ser = new XmlSerializer(typeof(T));
   StreamReader sr = new StreamReader(fileName);
   T dataSet = (T)ser.Deserialize(sr);
   return dataSet;
}

任何想法?


编辑:

OK,我只是添加了using语句,谢谢:)完整的类有点多,但它们看起来像这样:

public class User
{
   private string _name;
   public string Name
   {
     get { return _name; }
     set { }
   }
}
public class AllUser
{
   private User[] _users;
   public User[] Users
   {
      get { return _users; }
      set { }
   }
}

XML反序列化器-对象为空

假设示例代码是完整的,我一点也不惊讶。您有空setter(这是序列化将使用的)。不要仅仅通过添加空setter来满足序列化错误。这是填充数据所必需的。

将其改为

set { _users = value; }

和它应该工作

我认为你只需要将你要反序列化到的类标记为[Serializable]。例如:

[Serializable]
public class User
{
    ...
}