关于asp.net core 处理返回值的问题,出现类型转换错误

 

现在想给接口的返回值统一封装一个格式(这里就是EcisActionResult),在filter里OnActionExecuted()里,把返回的结果封装成了一个类.

 public override void OnActionExecuted(ActionExecutedContext context)
        {
            if (context.Exception is ApplicationException appex)
            {
                context.Result = new ObjectResult(ActionResultGenerator.CreateErrorResult<object>(appex.Message));
                context.ExceptionHandled = true;
                _log.Warn($"{context.HttpContext.Request.Path} : {appex.Message}");
            }
            else if (context.Result is ObjectResult result)
            {
                if (result.Value is not IEcisActionResult)
                {
                    result.Value = ActionResultGenerator.CreateDataResult(result.Value);
                }
            }
            _log.Debug($"End-{context.HttpContext.Request.Method}: {context.HttpContext.Request.Path} StatusCode:{context.HttpContext.Response.StatusCode}");
        }

现在的问题是,当接口返回类型为字符串时,会发生一个错误:

Unable to cast object of type 'FxEcis.WebApi.DataEntities.EcisActionResult`1[System.Object]' to type 'System.String'

 但是如果是其他数据结构,比如int,bool,list<xxx>,都可以正常的转成那个类型并返回,

如果加一句

result.DeclaredType = typeof(EcisActionResult<object>);

字符串就也能格式化了,但是有大神知道为什么其他数据类型不用加也能正常返回的原因吗

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^