XML反序列化器 - 对象为空

时间:2011-10-27 16:08:11

标签: c# xml serialization xml-serialization

我想将对象转换为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();
}

但是使用Deserializer我遇到了一些问题......虽然这个过程我没有错误或问题(调用它的方法相同),但是当我尝试进行任何成员访问时,问题就开始了。所有成员都为null(对于访问任何成员的方法都相同)。下面是代码:

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;
}

任何想法?


编辑:

好的,我刚刚添加了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 { }
   }
}

2 个答案:

答案 0 :(得分:2)

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

将其更改为

set { _users = value; }

它应该有效

答案 1 :(得分:-1)

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

[Serializable]
public class User
{
    ...
}