如何定义对象属性的类型

时间:2012-01-05 09:41:44

标签: c# xml-deserialization

当我得到一个具有不同属性类型的对象时,我需要定义每个对象属性的类型,并根据它 - 使用不同的方法序列化每个属性。我知道如何序列化不同类型的对象,但我怎么能说这个属性应该和这个方法一起使用,另一个用另一个我不知道的方法。

以下是我班级的一个例子:

[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) {}

1 个答案:

答案 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>来序列化该属性。