Если у меня есть модель данных в которой есть св-во представленное абстрактным классом. Если я возвращаю ответ GET запросом, то JSON сериализатор рабоатет корректно. Если я этот JSON передаю в POST запросе, то привязка не может понять какой объект я передал для абстрактного класса и в итоге в метод прилетает null.
public class ExchangeOptionDto
{
public int Id { get; set; }
public string Key { get; set; }
public bool AutoStartCycleFunc { get; set; }
public ProviderBaseDto Provider { get; set; }
}
public abstract class ProviderBaseDto
{
public string Name { get; set; }
}
public class ManualProviderDto : ProviderBaseDto
{
public string Address { get; set; }
public int TimeRespone { get; set; }
}
public class ByRulesProviderDto : ProviderBaseDto
{
public List<RuleDto> RulesDto { get; set; }
}
public class RuleDto
{
public string Name { get; set; }
public string Format { get; set; }
public RequestDto Request { get; set; }
public ResponseDto Response { get; set; }
}
RequestDto и ResponseDto - не привожу (POCO классы)
GET метод контроллера:
[HttpGet]
public ExchangeOptionDto Get()
{
var exch = new ExchangeOptionDto
{
Id = 1,
Key = "Exch_1",
AutoStartCycleFunc = true,
Provider = new ManualProvider
{
Name = "VidorBase",
Address = "41",
TimeRespone = 1000
}
};
return exch;
}
JSON:
{
"id": 1,
"key": "Exch_1",
"autoStartCycleFunc": true,
"provider": {
"address": "41",
"timeRespone": 1000,
"name": "VidorBase"
}
}
Если этот же JSON передать в теле POST запроса то будет null.
[HttpPost]
public void Post([FromBody]ExchangeOptionDto value)
{
var exch = value;
}
Я так понимаю, в качестве DTO нужно передавать только POCO объекты? Или, как то можно настроить поведение привязки для конкретного типа DTO?
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости