Есть несколько разных XML-поступлений от поста тела.Все XMLS почти одинаковы, поэтому я сначала добавляю базовый класс, а другие XMLS наследуют от базового класса.
Вот модель:
[XmlInclude(typeof(TextMsg))]
[XmlRoot("xml")]
public class BaseClass
{
public string ToUserName { get; set; }
public string FromUserName { get; set; }
public string CreateTime { get; set; }
public string MsgType { get; set; }
}
[XmlRoot("xml")]
public class TextMsg : BaseClass
{
public TextMsg()
{
MsgType = "text";
}
public string Content { get; set; }
public string MsgId { get; set; }
}
Есть несколько классов, наследуемых от базового классаМодель также и сейчас я показываю только один здесь.
И вот метод:
[HttpPost]
[Produces("application/xml")]
public async Task<IActionResult> mp([FromBody]BaseClass XmlData)
{
BaseClass ReturnXmlData = null;
var a = XmlData.GetType();
return Ok(ReturnXmlData);
}
Удаленный сервер отправит запрос содержит XML на мой сервер.Теперь входящая переменная XmlData
получает только значение и тип базового класса.
Мне нужно получить истинное значение и тип, а затем вернуть другой XML-код по входящему типу и значению.
Как я могу решить эту проблему?Спасибо.
Это один из входящих XML, который соответствует модели TextMsg, указанной выше:
<xml>
<ToUserName>123</ToUserName>
<FromUserName>456</FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType>text</MsgType>
<Content>this is a test</Content>
<MsgId>1234567890123456</MsgId>
</xml>