테스트되지 않음 : XmlSerialization을 사용하면 알려진 모든 구현에 대해 [XmlElement] 특성을 사용하여 속성을 꾸밀 수 있습니다.
public interface IMyInterface
{
[XmlElement(Type=typeof(App.Projekt), ElementName="Projekt")]
[XmlElement(Type=typeof(App.Person), ElementName="Person")]
[XmlElement(Type=typeof(App.Task), ElementName="Task")]
IMyInterface parent
{
get;
set;
}
}
테스트되지 않음 - 인터페이스에서 작동하는지 여부는 알 수 없습니다.
편집 :이 코드로이 문제를 테스트했습니다. 그것은 작동하지 않았다. XmlElement는 "object"유형의 Property와 동일한 기능을 수행 할 것이라고 생각했습니다.
public interface IMyInterface
{
IMyInterface Parent { get; set; }
string Name { get; set; }
}
public class ClassA : IMyInterface
{
[XmlElement(Type = typeof(ClassA), ElementName = "ClassA")]
[XmlElement(Type = typeof(ClassB), ElementName = "ClassB")]
[XmlElement(Type = typeof(ClassC), ElementName = "ClassC")]
public IMyInterface Parent { get; set; }
public string Name { get; set; }
public string AProperty { get; set; }
}
public class ClassB : IMyInterface
{
[XmlElement(Type = typeof(ClassA), ElementName = "ClassA")]
[XmlElement(Type = typeof(ClassB), ElementName = "ClassB")]
[XmlElement(Type = typeof(ClassC), ElementName = "ClassC")]
public IMyInterface Parent { get; set; }
public string Name { get; set; }
public string BProperty { get; set; }
}
public class ClassC : IMyInterface
{
[XmlElement(Type = typeof(ClassA), ElementName = "ClassA")]
[XmlElement(Type = typeof(ClassB), ElementName = "ClassB")]
[XmlElement(Type = typeof(ClassC), ElementName = "ClassC")]
public IMyInterface Parent { get; set; }
public string Name { get; set; }
public string CProperty { get; set; }
}
예외였다
이
"가 인터페이스 때문에 멤버 TestXMLSerializer.ClassA.Parent 형 TestXMLSerializer.IMyInterface 의 직렬화 할 수 없습니다."
는 (음, 사실은 재미 없어 ...) 작동 표시되지 않습니다. 나도 운이 XmlInclude 속성을 사용하여 시도했다 – Jeremy