2016-09-13 3 views
0

Мой XML:десериализации XML для класса # ребенка C

<?xml version="1.0" encoding="UTF-8"?> 
<response id="41cc788a-bc22-4ce0-8e1c-83bf49bbffed"> 
<message>Successfully processed the request</message> 
<payload>Alive</payload> 
</response> 

Мои Классы:

[XmlRoot("response")] 
[Serializable] 
public abstract class ESBResponseBase<T> 
{ 
    [XmlAttribute] 
    public string Id { get; set; } 

    public string Message { get; set; } 

    public T Payload { get; set; } 
} 

[XmlRoot("response")] 
[Serializable] 
public class ESBResponseIsAlive : ESBResponseBase<string> 
{ 
} 

Обратите внимание, что если у меня нет этих классов на ребенка классов он бросает исключение, так что кажется Наследование не работает с ними.

Мой Сериализация Код:

XmlSerializer serializer = new XmlSerializer(typeof (ESBResponseIsAlive)); 
var esbResponseIsAlive = (ESBResponseIsAlive) serializer.Deserialize(result); 

Однако, когда я сериализации мои свойства объекта являются недействительными.

Я думаю более вероятно, что это проблема с наследованием в классах, используемых для сериализации. Можно просто изменить базовый класс на конкретный конкретный класс и использовать Generic, но я предпочел, чтобы он был строго типизирован.

ответ

0

Как выясняется, XMLSerializer чувствителен к регистру. Мой класс теперь выглядит следующим образом: он работает.

[XmlAttribute("id")] 
    public string Id { get; set; } 

    [XmlElement("message")] 
    public string Message { get; set; } 

    [XmlElement("payload")] 
    public T Payload { get; set; } 
Смежные вопросы