C#ActionExecutedContext 获取方法的参数并转为对象
时间: 2024-03-09 09:46:43 浏览: 59
可以通过 `ActionDescriptor` 对象获取方法的参数信息,然后通过 `ValueProvider` 对象获取参数的值,最后将参数值转换为对象。以下是一个示例代码:
```csharp
public override void OnActionExecuted(ActionExecutedContext context)
{
var actionDescriptor = context.ActionDescriptor as ControllerActionDescriptor;
var parameters = actionDescriptor?.MethodInfo.GetParameters();
if (parameters != null && parameters.Any())
{
var arguments = new Dictionary<string, object>();
foreach (var parameter in parameters)
{
var valueProvider = context.ValueProvider.GetValue(parameter.Name);
if (valueProvider != ValueProviderResult.None)
{
arguments[parameter.Name] = valueProvider.FirstValue;
}
}
var obj = Activator.CreateInstance(actionDescriptor.ControllerTypeInfo, arguments.Values.ToArray());
// obj 就是转换后的对象
}
}
```
这里假设方法的参数名称与对象的属性名称一致,如果不一致可以通过配置文件或者其他方式进行映射。
阅读全文