public class Hat
{
[XmlTextAttribute]
public string Name { get; set; }
[XmlAttribute("Color")]
public string Color { get; set; }
}
var hat1 = new Hat {Name="Cool Hat", Color="Red"};
var hat2 = new Hat {Name="Funky Hat", Color=null};
Esto es lo que me pasa (aviso de falta de color atributo en Funky sombrero):Serialize propiedad de cadena como atributo, incluso si la cadena está vacía
<Hats>
<Hat Color="Red">Cool Hat</Hat>
<Hat>Funky Hat</Hat>
</Hats>
Esto es lo que quiero:
<Hats>
<Hat Color="Red">Cool Hat</Hat>
<Hat Color="">Funky Hat</Hat>
</Hats>
¿Cómo puedo forzar al serializador a crear un atributo vacío en vez de omitirlo?
EDIT:
Resulta que soy un idiota y creé un ejemplo que contenía un error, porque quería simplificar el código para el ejemplo.
Si el valor de color es "" (o String.Empty), en realidad es serializado como un atributo vacío. Sin embargo, realmente tenía un valor nulo, no una cadena vacía, por lo tanto, se dejó de lado.
Así el comportamiento que quería era en realidad ya el comportamiento del ejemplo que he creado.
Lo siento, muchachos!
_ "Si el valor del color es ""(o String.Empty), en realidad es serializado como un atributo vacío Sin embargo, realmente. tenía un valor nulo, no una cadena vacía, por lo que se dejó fuera. "_ Wow no se dio cuenta de ese comportamiento antes. Punto interesante –