简体   繁体   English

从Web API控制器方法中的ParameterInfo确定参数位置

[英]Determine Parameter Location From ParameterInfo In Web API Controller Method

I have an ASP.Net Web Api controller like this: 我有一个像这样的ASP.Net Web Api控制器:

public class SomeController : ApiController
{
    public myObject Post([FromUri]string qsVar, [FromBody]yourObject bVar)
    {
        return myObject(qsVar, bVar);
    }
}

I am writing a documentation generator and need to determine if a parameter is [FromUri] or [FromBody] based on it's ParameterInfo . 我正在编写一个文档生成器,需要根据其ParameterInfo确定参数是[FromUri]还是[FromBody]

Type tc = typeof(SomeController);

foreach (MethodInfo m in tc.GetMethods())
{
    foreach (ParameterInfo p in m.GetParameters())
    {
        if (p.isFromBody ???) doThis(); else doThat();
    }
}

How do I determine whether a parameter has a [FromUri] or [FromBody] flag in an ASP.Net Web Api Controller method? 如何确定参数在ASP.Net Web Api Controller方法中是否具有[FromUri][FromBody]标志?

Answer: 回答:

bool isFromUri = p.GetCustomAttributes(false)
    .Any(x => x.GetType() == typeof(FromUriAttribute));

You may take a look at the CustomAttributes property: 您可以看一下CustomAttributes属性:

bool hasFromBodyAttribute = p
    .CustomAttributes
    .Any(x => x.AttributeType == typeof(FromBodyAttribute));

if (hasFromBodyAttribute) 
{
    doThis(); 
}
else 
{
    doThat();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM