I\'m noticing an odd behavior with the XmlSerializer and generic lists (specifically List
). I was wondering if anyone has seen this before or knows w
It happens because you are initializing the List in the constructor. When you go to deserialize, a new ListTest is created and then it populate the object from state.
Think of the workflow like this
A simple solution would be to init the object outside the scope of the constructor.
public class ListTest
{
public int[] Array { get; set; }
public List<int> List { get; set; }
public ListTest()
{
}
public void Init()
{
Array = new[] { 1, 2, 3, 4 };
List = new List<int>(Array);
}
}
ListTest listTest = new ListTest();
listTest.Init(); //manually call this to do the initial seed
The issue is that you're defining the original 1,2,3,4 in the List in the default constructor. Your deserializer is adding to the list, not defining it.