Asp.net web api webapi actionfilters,如何在使用从基类型继承的不同参数类型时注入值

Asp.net web api webapi actionfilters,如何在使用从基类型继承的不同参数类型时注入值,asp.net-web-api,action-filter,actionfilterattribute,Asp.net Web Api,Action Filter,Actionfilterattribute,我有一个基本请求类型 类请求库 { public string inputId; public string derivedid; } 和继承的类型 class RequestA : RequestBase { public string name; } 及 我有一个webapi服务,一些操作使用RequestA的输入参数,一些操作使用RequestB [HttpPost] [MyFilter] [ActionName("Process1")] public Htt

我有一个基本请求类型

类请求库

{
   public string inputId;
   public string derivedid;
}
和继承的类型

class RequestA : RequestBase
{
   public string name;
}

我有一个webapi服务,一些操作使用RequestA的输入参数,一些操作使用RequestB

[HttpPost]
 [MyFilter]
 [ActionName("Process1")]
  public HttpResponseMessage Process1(RequestA request)
  {  
      //do something with request.derivedId
  }

 [HttpPost]
 [MyFilter]
 [ActionName("Process2")]
  public HttpResponseMessage Process2(RequestB request)
  {  
      //do something with request.derivedId
  }
我有一个actionfilter,它从请求中获取inputId并生成一个derivedId

 public override void OnActionExecuting(HttpActionContext actionContext)
    {
        RequestBase request = (RequestBase)actionContext.ActionArguments["request"];
        string inputId = request.inputId;

        string derivedId = inputId + "123";
        // ?? somehow inject derivedId back into the actionContext so that my controller methods can access?
    }
正如我上面的评论所述,我希望填充derivedId字段,并让我的控制器方法能够访问它


提前感谢

此线程中已经介绍了一些解决此问题的方法-其中一种方法应该适合您:

 public override void OnActionExecuting(HttpActionContext actionContext)
    {
        RequestBase request = (RequestBase)actionContext.ActionArguments["request"];
        string inputId = request.inputId;

        string derivedId = inputId + "123";
        // ?? somehow inject derivedId back into the actionContext so that my controller methods can access?
    }