Web APi在OnActionExecuting方法上将参数转换为其原始类型

时间:2016-07-20 14:13:26

标签: c# asp.net-web-api

在web Api中我正在编写一个自定义属性。在OnActionExecuting方法中,我想获取传递给Action方法的参数并将其强制转换为原始类型。 我正在那样得到参数​​

public override void OnActionExecuting(HttpActionContext actionContext)
    {
        ActionParameters = actionContext.ActionArguments;
        object param = ActionParameters.First().Value;


        var actionInfo = actionContext.ActionDescriptor;
        var parameter = actionInfo.GetParameters().First();
        string p = parameter.ParameterType.FullName;
        Type t = Type.GetType(p + "," + "Models"); //Type of the parameter
    }

应该只有一个参数。现在我不知道参数的确切类型。我只知道参数会有几个属性。如何将参数转换为原始类型。

1 个答案:

答案 0 :(得分:0)

ActionArguments是一个字典泛型dixtionaryof字符串和object.It将值存储为对象,因此您需要将其强制转换为您期望的类型。

public override void OnActionExecuting(HttpActionContext actionContext)
{
    ActionParameters = actionContext.ActionArguments;
    if (actionContext.ActionArguments.ContainsKey("Key1"))
    {
      var val = actionContext.ActionArguments["Key1"] as string;
    }        
}