当我得到一个具有不同属性类型的对象时,我需要定义每个对象属性的类型,并根据它 - 使用不同的方法序列化每个属性。我知道如何序列化不同类型的对象,但我怎么能说这个属性应该和这个方法一起使用,另一个用另一个我不知道的方法。
以下是我班级的一个例子:
[XmlType("Person")] // define Type
public class Person
{
[XmlElement("PropertyType")]
public PropertyType PropertyType { get; set; }
[XmlElement("ID")]
public string ID { get; set; }
[XmlElement("Name")]
public string Name { get; set; }
[XmlElement("City")]
public string City { get; set; }
[XmlElement("Age")]
public Dictionary<object, object> Age { get; set; }
}
这里我序列化了int,string,List properties
public static string XmlSerializeUsualTypes(Object item) {}
这里我序列化了字典属性
public static string XmlSerializeDictionaryTypes(Object item) {}
答案 0 :(得分:0)
继承Dictionary<K,V>
并使用XmlSerializeDictionaryTypes
方法实施IXmlSerializable
界面。
public class MyXmlDictionary<K, V> : Dictionary<K,V>, IXmlSerializable
{
// … implement IXmlSerializable methods here …
}
当XmlSerializer
遇到实施IXmlSerializable
的属性时(例如,在序列化Person
对象时),它将调用IXmlSerializable.WriteXml
(在poperty的类型上实现,例如我们的MyXmlDictionary<K,V>
)来序列化该属性。