기본 클래스 MyBase
의 개체 배열이 있습니다. 이러한 객체 중 일부는 파생 클래스의 인스턴스이므로 System.Xml.Serialization.XmlSerializer
을 사용하여이 배열을 직렬화하려고하면 파생 클래스에 대한 불만이 발생합니다. System.InvalidOperationException : DerivedClass 유형이 예상되지 않았습니다. 정적으로 알 수없는 형식을 지정하려면 XmlInclude 또는 SoapInclude 특성을 사용하십시오.기본 클래스 만 serialize하도록 System.Xml.Serialization.XmlSerializer에 지시하는 방법?
나는 파생 클래스를 직렬화하고 싶지 않아, 나는 분명히 (그 문제에 대한 기본 클래스 또는 [XmlInclude()]
) 파생 클래스에서 [XmlIgnore()]
을 넣어 싶지 않아!
XmlSerializer
에서 까지는이 같은 구성원에 대해서만을 serialize하는 방법이 있습니까?
[XmlElement("Items")]
public MyBase[] Items
{
get
{
return items.ToArray();
}
set
{
items = new HashSet<MyBase>(value);
}
}
당신이 XmlSerializer를 생성자 유형을 전달합니까? – KristoferA
나는 이것을 시도했지만 제대로 작동하지 못했습니다 : 리스트 derivedTypes = new리스트 (); foreach (항목의 MyBase 항목) { derivedTypes.Add (item.GetType()); } XmlSerializer serializer = new XmlSerializer (typeof (RootItem), derivedTypes.ToArray()); –
l33t