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 { }
}
}
假设示例代码是完整的,我一点也不惊讶。您有空setter(这是序列化将使用的)。不要仅仅通过添加空setter来满足序列化错误。这是填充数据所必需的。
将其改为
set { _users = value; }
和它应该工作
我认为你只需要将你要反序列化到的类标记为[Serializable]
。例如:
[Serializable]
public class User
{
...
}