Имеется сервер Web-Api 2, который обращается к БД через dapper. На сервере имеется метод для вызова процедуры из БД, подобный этому:
var user = conn.Query<User>("spGetUser", **new { Id = 1 }**, commandType:CommandType.StoredProcedure)
Как видно из примера кода для передачи параметров используются анонимные типы. На одном из контроллеров сервера есть метод Put принимающий в качестве параметров имя процедуры и передаваемые ей параметры:
[HttpPut]
public async Task<IEnumerable<IEnumerable>> CallStoredProcedure(string ProcName, **[FromBody] object sqlParams**)
На клиенте есть метод вызывающий описанный выше метод с контроллера и передающий ему в качестве второго параметра анонимный класс вида:
new {Id = 5, Name = "default", price = 100}
Количество и имена параметров заранее не известны.
Проблема заключается в следующем, на контроллер приходит JObject хранящий в себе строку вида:
{{"Id":5}{"Name": default}{"price": 100}}
При попытке десереализовать данную строку средствами NewtonSoftJson получаем object содержащий в себе вышеупомянутый JObject. Десереализовать в анонимный класс не представляется возможности, т.к. тип объекта на сервере не известен. Передача без десереализцаии этой строки в даппер приводит к возврату null. Много думали, много чего перепробовали, ничего не помогает. Буду очень признателен за любую реальную помощь. Заранее спасибо!
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости