CI выбрасывает
A Database Error Occurred
Unable to connect to your database server using the provided settings.
или что-то подобное при сбое соединения
Вы можете инкапсулировать список тривиально:
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
[XmlRoot("user_list")]
public class UserList
{
public UserList() {Items = new List<User>();}
[XmlElement("user")]
public List<User> Items {get;set;}
}
public class User
{
[XmlElement("id")]
public Int32 Id { get; set; }
[XmlElement("name")]
public String Name { get; set; }
}
static class Program
{
static void Main()
{
XmlSerializer ser= new XmlSerializer(typeof(UserList));
UserList list = new UserList();
list.Items.Add(new User { Id = 1, Name = "abc"});
list.Items.Add(new User { Id = 2, Name = "def"});
list.Items.Add(new User { Id = 3, Name = "ghi"});
ser.Serialize(Console.Out, list);
}
}
Да, это сериализирует и десериализует List<>. Просто удостоверьтесь, что Вы используете [XmlArray] атрибут если в сомнении.
[Serializable]
public class A
{
[XmlArray]
public List<string> strings;
}
Это работает с обоими, Сериализируют () и Десериализовывают ().
Не уверенный в List< T> но Массивы являются, конечно, выполнимыми. И определенное волшебство делает действительно легким добраться до Списка снова.
public class UserHolder {
[XmlElement("list")]
public User[] Users { get; set; }
[XmlIgnore]
public List<User> UserList { get { return new List<User>(Users); } }
}
Да, он десериализуется в List <>. Нет необходимости хранить его в массиве и оборачивать / инкапсулировать в список.
public class UserHolder
{
private List<User> users = null;
public UserHolder()
{
}
[XmlElement("user")]
public List<User> Users
{
get { return users; }
set { users = value; }
}
}
Код десериализации,
XmlSerializer xs = new XmlSerializer(typeof(UserHolder));
UserHolder uh = (UserHolder)xs.Deserialize(new StringReader(str));