2012-01-05 3 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; } 
} 

здесь я сериализации свойства INT, струнные, Список

public static string XmlSerializeUsualTypes(Object item) {} 

здесь сериализовать словарь свойства

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

Не понимаю вопроса. Какая у вас проблема? – Amy

+0

Мне нужно сериализовать объект класса Person, он имеет свойство с типом свойства Словарь, который не сериализуется с сериализацией xml, поэтому я написал методы, которые сериализуют обычные свойства и свойство типизированного словаря. Теперь мне нужно сериализовать различные свойства с помощью другого метода? но не знаю, как сказать, что это свойство должно использоваться с этим методом, а другое с другим методом, который я не знаю. – revolutionkpi

ответ

0

Наследование Dictionary<K,V> и используйте интерфейс IXmlSerializable, используя XmlSerializeDictionaryTypes способ.

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

Когда XmlSerializer обнаруживает свойство реализующего IXmlSerializable(например, при сериализации Person объекта) он будет вызывать IXmlSerializable.WriteXml(реализованных от типа недвижимости и имущества в, например MyXmlDictionary<K,V> в нашем случае) сериализовать это свойство.

+0

Я использую этот интерфейс и имел Inherit Dictionary . Я спрашиваю, как закончить мой код, чтобы понять это – revolutionkpi

+0

, но как я могу сказать, чтобы сериализовать свойство объекта в текущем методе, который сериализует именно словарь? – revolutionkpi

Смежные вопросы