我有一个处理XML序列化的类。
public class DB
{
public List<Connection> lstConnections { get; set; }
static string sRootAttribute = "Connections";
public static DB LoadFromFile(string path)
{
FileStream fs = null;
DB db = null;
try
{
fs = File.Open(path, FileMode.Open);
var serializer = new XmlSerializer(typeof(DB), new XmlRootAttribute(sRootAttribute));
db = (DB)serializer.Deserialize(fs);
}
catch
{
}
if (fs != null)
{
fs.Close();
}
return db;
}
public static void SaveToFile(string path, object objData)
{
var fs = File.Open(path, FileMode.Create);
var serializer = new XmlSerializer(objData.GetType(), new XmlRootAttribute(sRootAttribute));
try
{
serializer.Serialize(fs, objData);
}
catch
{
}
fs.Close();
}}
LoadFromFile方法有点泛型,因为它不考虑序列化的数据类型。
但是,SaveToFile对正在序列化的对象执行GetType。
因此,当我试图用LoadFromFile反序列化这个文件时,我遇到了问题。我没有得到任何异常,但是lstConnections是空的。
发布于 2014-10-12 04:49:18
如果您拥有Connection类的所有权,则:
用System.Xml.Serialization.XmlArrayItemAttribute("connection",IsNullable=false()修饰Connection类,用System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true).
修饰返回集合的属性,并将每个自定义子类型标记为XmlArrayItemAttribute
https://stackoverflow.com/questions/26310188
复制相似问题