Я создал очень аккуратный способ реализации метода PATCH для моего проекта Web.API с использованием ExpandoObject в качестве параметра. Как показано ниже:Как преследовать ApiExplorer для создания документации для ExpandoObject?
[HttpPatch, Route("api/employee/{id:int}")]
public IHttpActionResult Update(int id, [FromBody] ExpandoObject employee)
{
var source = Repository.FindEmployeeById(id);
Patch(employee, source);
Repository.SaveEmployee(source);
return Ok(source);
}
Однако при генерации документации ApiExplorer в недоумении относительно того, что делать с ExpandoObject, что вполне понятно. У кого-нибудь есть идеи о том, как манипулировать ApiExplorer, чтобы предоставить разумную документацию?
Моя идея состояла в том, чтобы возможно ввести новый атрибут, который указывает на реальный тип, который, как ожидается:
public IHttpActionResult Update(int id, [FromBody, Mimics(typeof(Employee))] ExpandoObject employee)
{
...
}
Но я понятия не имею, где не начинать, какие-либо идеи или предложения приветствуются.