public class PathValue : Simple
{
[XmlAttribute("path")]
public string Value { get; set; }
}
public class ObjectValue : Simple
{
[XmlAttribute("object")]
public string Value { get; set; }
}
그러나 실제로 속성을 재정의하지 않습니다. 기본 클래스의 멤버에 특성을 적용하려고합니다. 이것이 가능한가?
실제 문제는 XML에서 (매우 훌륭하게 작동하는) 직렬화 메커니즘에서 속성의 이름 만 다른 유사한 요소를 많이 발견한다는 것입니다. 일관성이 없으며, 제어 형식). 지금은 각 요소에 대해 다른 클래스를 만들어야하지만 반면에 그들은 100 % 동일합니다 (속성을 제외하고).
가능하지 않다고 생각하지만 결코 알지 못할 수도 있습니다.
업데이트 :
Marc의 접근 방식을 시도했지만 아무 소용이 없습니다.
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();
}
}
... 트릭을 수행하지 않습니다.
당신은 Simple에서 상속받을 생각이었습니다. – Noldorin
단일 xml 파일에 및 요소가 모두 포함될 수 있다는 것을 의미합니까? 모든 값 속성을 사용하여 값 클래스에 직렬화해야합니까? –
Groo
그들은 분명히 파생 클래스에 직렬화해야하며, 요소 자체의 이름은 사용 된 위치에 따라 다르지만 일반적 아이디어입니다. 또한 내 응용 프로그램에서는 그것을 읽는 것보다 XML을 작성하는 것이 더 일반적으로 사용됩니다. –