在Attribute构造函数中使用Lambda来获取方法的参数

Ant*_*haw 1 c# lambda attributes

我甚至不确定这是否可行,但我已经用尽所有想法来解决这个问题,所以我想我会把它发送给社区,看看你的想法.而且,如果不可能,也许你也有一些想法.

我正在尝试创建一个Attribute类,我可以将其添加到一个方法中,该方法允许我使用lambda表达式来获取方法的每个参数


public ExampleAttribute : Attribute 
{
    public object Value { get; set; }

    public ExampleAttribute(--something here to make the lambda work--, object value)
    {
        Value = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想能够在下面这样的事情:


[Example(x=>x.Id, 4)]
[Example(x=>x.filter, "string value")]
public ActionResult Index(int Id, string filter) 
{
    return View();
}
Run Code Online (Sandbox Code Playgroud)

我知道我可能完全梦想着这个想法.我基本上试图编写一个模型来允许自我记录的REST API文档.在最近的一个项目中,我们写了十几个服务,每个服务有5到15个方法,我认为写一些东西要比这更容易,而不是为每个方法编写一个文档页面.我计划最终将它作为一个开源项目发布,一旦我把它放在一个我认为可以释放的地方.

Dea*_*ing 5

我不相信这是可能的,但我认为你无论如何都不需要.相反,您可以将属性直接放在参数上,如下所示:

public ActionResult Index(
    [Documentation("the identifier...")]
    int id,

    [Documentation("The filter")]
    string filter
  )
{
    return ...;
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用ParameterInfo.GetCustomAttributes获取参数的属性.