목록에 enum 속성이있는 개체가 들어있는 목록 속성이 포함 된 클래스가 있습니다. 나는이를 직렬화 할 때. NET Xml Serialization에서 속성 값을 기반으로 다른 태그를 사용하여 enum 속성을 사용하여 클래스를 직렬화 할 수 있습니까?
, 그것은 다음과 같습니다
<?xml version="1.0" encoding="ibm850"?>
<test>
<events>
<test-event type="changing" />
<test-event type="changed" />
</events>
</test>
는, XML은 다음과 같이 갈 수는 속성을 통해, 수, 또는 유사한가요?
<?xml version="1.0" encoding="ibm850"?>
<test>
<events>
<changing />
<changed />
</events>
</test>
기본적으로 태그 이름을 결정하는 방법으로 enum의 속성 값을 사용 하시겠습니까? 유일한 방법은 클래스 계층 구조 (즉, 속성 값을 사용하는 대신 하위 클래스 만들기)를 사용하고 있습니까?
편집 : 테스트를 마친 후에도 클래스 계층 구조가 실제로 작동하지 않는 것처럼 보입니다. 클래스를 구조화하여 원하는 출력을 얻는 방법이 있다면 하위 클래스를 사용하는 경우에도 허용되는 대답입니다. 여기
는 (그렇지 않으면 프로그램 창이 즉시 종료됩니다, 비주얼 스튜디오에서 실행되도록 Ctrl + F5를 명중하는 기억) 출력 위의 XML을하는 샘플 프로그램입니다 :using System;
using System.Collections.Generic;
using System.Xml.Serialization;
namespace ConsoleApplication18
{
public enum TestEventTypes
{
[XmlEnum("changing")]
Changing,
[XmlEnum("changed")]
Changed
}
[XmlType("test-event")]
public class TestEvent
{
[XmlAttribute("type")]
public TestEventTypes Type { get; set; }
}
[XmlType("test")]
public class Test
{
private List<TestEvent> _Events = new List<TestEvent>();
[XmlArray("events")]
public List<TestEvent> Events { get { return _Events; } }
}
class Program
{
static void Main(string[] args)
{
Test test = new Test();
test.Events.Add(new TestEvent { Type = TestEventTypes.Changing });
test.Events.Add(new TestEvent { Type = TestEventTypes.Changed });
XmlSerializer serializer = new XmlSerializer(typeof(Test));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
serializer.Serialize(Console.Out, test, ns);
}
}
}