Supongamos que tengo el siguiente (trivialmente sencilla) clase base:¿Puedo aplicar un atributo a un miembro heredado?
public class Simple
{
public string Value { get; set; }
}
ahora quiero hacer lo siguiente:
public class PathValue : Simple
{
[XmlAttribute("path")]
public string Value { get; set; }
}
public class ObjectValue : Simple
{
[XmlAttribute("object")]
public string Value { get; set; }
}
Pero sin llegar a la redefinición de la propiedad. Quiero aplicar atributos a los miembros de la clase base. es posible?
El problema real es que en mi mecanismo de serialización de/a XML (que funciona brillantemente por cierto), encuentro muchos elementos similares donde solo difieren los nombres de los atributos (no son consistentes, y no lo hago). t controlar el formato). Ahora mismo necesito crear una clase diferente para cada elemento, mientras que son como 100% iguales (aparte de los atributos).
No creo que sea posible, pero es posible que nunca lo sepas.
ACTUALIZACIÓN:
me trataron enfoque de Marc, pero fue en vano:
public class Document
{
public PathValue Path;
public ObjectValue Object;
}
class Program
{
static void Main(string[] args)
{
var doc = new Document()
{
Path = new PathValue() { Value = "some path" },
Object = new ObjectValue() { Value = "some object" }
};
XmlAttributeOverrides overrides = new XmlAttributeOverrides();
overrides.Add(typeof(PathValue), "Value", new XmlAttributes() { XmlAttribute = new XmlAttributeAttribute("path") });
overrides.Add(typeof(ObjectValue), "Value", new XmlAttributes() { XmlAttribute = new XmlAttributeAttribute("object") });
XmlSerializer serializer = new XmlSerializer(typeof(Document), overrides);
serializer.Serialize(Console.Out, doc);
Console.WriteLine();
Console.ReadLine();
}
}
... no hace el truco.
Creo que quisiste heredar de Simple. – Noldorin
¿Esto significa que un único archivo xml puede contener elementos de y , que deberían serializarse en una clase de valor con una propiedad de valor? –
Groo
Deben serializarse a la clase derivada, obviamente, y el nombre del elemento depende de dónde se usa, pero sí, esa es la idea general. Además, en mi aplicación, se usa más comúnmente para escribir el XML que para leerlo. –