Decir que tengo una clase simple como tanXmlSerializer y Colección propiedad privada con colocador
[Serializeable]
public class MyClass
{
public MyClass()
{
this.MyCollection = new List<int>();
}
public List<int> MyCollection { get; private set;}
}
Si trato de deserializar esto utilizando XmlSerializer me sale un error diciendo que MiColeccion es de sólo lectura y no puede ser asignado a. Sin embargo, no quiero que el colocador sea público ya que esto puede causar todo tipo de problemas si el usuario de la clase lo asigna. FxCop advierte con razón contra esta: Collection properties should be read only
Sin embargo, en la parte inferior de la página en la comunidad de contenido añadido es la siguiente:
XmlSerializer entiende colecciones de sólo lectura Colección propiedades no tienen que ser lectura escriba para XmlSerializer en serialice y deserialice los contenidos correctamente. XmlSerializer se verá por un método llamado Añadir en la recopilación de propiedades que implementan ICollection o IEnumerable, y el uso que poblar la colección cuando deserializar una instancia del propietario tipo.
Sin embargo, simplemente no parece ser el caso (ya que obtengo la InvalidOperationException). ¿Qué puedo hacer que obedezca la mejor práctica de mantener privado el establecimiento de propiedades mientras todavía me permite usar el XmlSerializer?
Saludos, eso lo arregló. – Ray
¡Qué terrible error! Me pregunto si está arreglado en 4 ... – Will
Este error (¿característica?) Todavía está presente en .NET 4 :( – drumsta