如何在自定义过滤器属性中获取我的类型结果?

时间:2017-03-16 20:48:09

标签: c# asp.net-core asp.net-core-webapi

这是我的代码:

// Controller

[HttpGet("{id}")]
[MyFilter]
public async Task<MyCustomType> Load(string id)
{
    return new MyCustomType(....);
}

// Custom attribute

public class MyFilterAttribute : ActionFilterAttribute
{
    public override void OnResultExecuting(ResultExecutingContext context)
    {
        // Can I have my MyCustomType result here?
    }
}

我需要在MyCustomType结果的特定属性值的情况下实现一些特殊逻辑。

1 个答案:

答案 0 :(得分:0)

Public class MyCustomType
{
     // assuming that there will be more properties 
     public int Id { get; set; }
     public string Name { get; set; }
}

// Now, Move to Controller method.

public class CustomController : Controller 
{
    [HttpGet({"id"})]
    [MyFilter]
    public async Task<MyCustomType> Load(string id)
    {

       // Do some async operations 
       // Or do some Db queries 
       // returning MyCustomType
       MyCustomType typeToReturn = new MyCustomType();
       typeToReturn.Id = 1;
       typeToReturn.Name = "something";

       return typeToReturn;
    }
} 

 // Well here goes the attribute

public class MyFilterAttribute : ActionFilterAttribute
{
     public override void OnResultExecuting(ResultExecutingContext context)
     {
          // you have to do more digging i am using dynamic to get the values and result.
          dynamic content = context.Result;
          if (content != null)
          {
              dynamic values = content.Value;
          }

     }

}

编辑更改了代码,并在点网核心项目中运行,我能够获取值,我如何使用dynamic您可以更多地了解它。