Imagino a utilizar la serialización XML como esto:¿Por qué XmlSerializer es tan difícil de usar?
class Foo {
public Foo (string name) {
Name1 = name;
Name2 = name;
}
[XmlInclude]
public string Name1 { get; private set; }
[XmlInclude]
private string Name2;
}
StreamWriter wr = new StreamWriter("path.xml");
new XmlSerializer<Foo>().Serialize (wr, new Foo ("me"));
Editar: Sé que este código es incorrecto. Fue solo para mostrar cómo me gustaría usarlo.
Pero esto no funciona en absoluto:
- XmlSerializer no es genérica. Tengo que lanzar desde y para oponerme a la (de) serialización.
- Cada propiedad tiene que ser completamente pública. ¿Por qué no utilizamos Reflection para acceder a setters privados?
- campos privados no pueden ser serializados. Me gustaría decorar campos privados con un atributo para que XmlSerializer los incluya.
¿Echo de menos algo y XmlSerializer realmente ofrece las posibilidades descritas? ¿Hay serializadores alternativos en XML que manejen estos casos de forma más sofisticada?
Si no es así: Estamos en 2010, después de todo, y .NET ha existido durante muchos años. La serialización XML a menudo se usa, es totalmente estándar y debe ser realmente fácil de realizar. ¿O es posible que mi comprensión sea incorrecta y que la serialización XML no deba exponer las características descritas por una buena razón?
Edit: Legacy no es una buena razón para imo. List
tampoco fue genérico al principio.
(.. Siéntase libre para ajustar el subtítulo o etiquetas Si esto debe ser CW, por favor, simplemente introduce una nota)
La misma razón que cavar un agujero con una pelota de baloncesto es tan difícil. ;-) –
No es correcto decir que '' List' no era genérico al principio ". 'List' se introdujo en 2.0 y era una clase genérica en ese momento. La antigua 'ArrayList' no genética es una * clase * diferente * que todavía está * allí *. – AakashM
Ooops. Error de mi parte. Me disculpo :) – mafu