0
У меня есть класс, который обрабатывает сериализацию XML.XmlSerializer и типы
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
пуст.
Код, созданный 'Xsd2Code', имеет кучу [Атрибуты, которые управляют сериализацией XML] (http://msdn.microsoft.com/en-us/library/83y7df3e (v = vs.110) .aspx). Я думаю, что сериализатор полагается на некоторый атрибут, например 'System.Xml.Serialization.XmlArrayAttribute', чтобы выполнить эту работу. – kennyzx