У меня есть этот код
[HttpPost("search")]
public async Task<ActionResult<int>> GetEmployees([FromBody] EmployeeSearchDto employeeSearchParameters)
{
}
Как получить
Тип ActionResult и
тип int
Не могу найти возвращаемое свойство типа в отражениях.
Дополнительная информация:
Проблема, которую я пытаюсь решить
Я использую медиатор, в котором определяется ответ во время выполнения.
У меня есть этот метод
public Task<ActionResult<ListDto<EmployeeListItemDto>>> GetEmployees([FromBody] EmployeeSearchDto employeeSearchParameters)
{
var request = new GetEmployeesQuery()
{
EmployeeSearchParameters = employeeSearchParameters
};
var response = await _mediator.Send(request).ConfigureAwait(false); //this returns a response is determined in runtime due to mediatr that contains a property Ienumerable<T> T as employee
return base.ProcessResponse(response); //this returns and ObjectResult with values from the database
}
Проблема в том, что когда мы заменили тип возврата
Task<ActionResult<ListDto<EmployeeListItemDto>>>
на
Task<ActionResult<int>>
он все еще работает, и Swagger показывает 0 как успешный ответ из-за типа возвращаемого значения int.
Меня спросили, можем ли мы предотвратить это,
Я подумал, сравнивая возвращаемый тип ответа .ResponseValues, который возвращает IEnumerable
и ActionResult, если они равны во время выполнения.
В основном то, что мы пытаемся выполнить sh, это безопасность типов, которую я не знаю, возможно, поэтому я прибег к отражение.
Обновление Я пытался использовать решение РБ , но не уверен, как его использовать.
public Task<ActionResult<ListDto<EmployeeListItemDto>>> GetEmployees([FromBody] EmployeeSearchDto employeeSearchParameters)
{
var request = new GetEmployeesQuery()
{
EmployeeSearchParameters = employeeSearchParameters
};
var response = await _mediator.Send(request).ConfigureAwait(false); //this returns a response is determined in runtime due to mediatr that contains a property Ienumerable<T> T as employee
GetMethodInfo(GetEmployees); //Im getting cannot be inferred from the usage error.
return base.ProcessResponse(response); //this returns and ObjectResult with values from the database
}
public Type GetMethodInfo<T>(Func<T> foo)
{
return foo.GetType().GetGenericArguments().Single();
}
Я получаю, не может быть выведен из ошибки использования