2012-01-05 59 views
0

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

这里是我班的一个示例:

[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; } 
} 

这里我序列整型,字符串,列表属性

public static string XmlSerializeUsualTypes(Object item) {} 

这里我序列字典性质

public static string XmlSerializeDictionaryTypes(Object item) {} 
+0

我不明白这个问题。你有什么问题? – Amy 2012-01-05 10:30:35

+0

我需要序列化Person类的对象,它具有与xml序列化不可序列化的属性类型Dictionary的属性,所以我编写了序列化常用属性和字典类型属性的方法。现在我需要用不同的方法序列化不同的属性?但不知道如何知道这个属性应该与这个方法一起使用,而另一个则与另一个我不知道的方法一起使用。 – revolutionkpi 2012-01-05 10:42:28

回答

0

继承Dictionary<K,V>和使用您的实现IXmlSerializable界面方法。

public class MyXmlDictionary<K, V> : Dictionary<K,V>, IXmlSerializable 
{ 
    // … implement IXmlSerializable methods here … 
} 

XmlSerializer遇到执行IXmlSerializable(例如序列化Person对象时)它会调用IXmlSerializable.WriteXml(在poperty的类型来实现,例如MyXmlDictionary<K,V>在我们的例子)以序列化属性的属性。

+0

我使用这个接口,并有继承字典。我问如何完成我的代码来实现这 – revolutionkpi 2012-01-05 11:04:51

+0

但我怎么能告诉序列化当前方法中的对象的属性,该序列化完全字典? – revolutionkpi 2012-01-05 11:19:27

相关问题