C# 如何确定ParameterInfo是否为返回参数

C# 如何确定ParameterInfo是否为返回参数,c#,.net,reflection,system.reflection,parameterinfo,C#,.net,Reflection,System.reflection,Parameterinfo,如何确定参数info是否为返回参数 我写了下面的函数,但我担心我可能遗漏了一些东西: public bool IsReturnParameter(ParameterInfo parameter){ var method = parameter.Member as MethodInfo; return method != null && parameter.Equals(method.ReturnParameter); } 我基于两个假设,这可能是有缺陷的:(1)

如何确定
参数info
是否为返回参数

我写了下面的函数,但我担心我可能遗漏了一些东西:

public bool IsReturnParameter(ParameterInfo parameter){
    var method = parameter.Member as MethodInfo;
    return method != null && parameter.Equals(method.ReturnParameter);
}

我基于两个假设,这可能是有缺陷的:(1)在
MethodInfo
ConstructorInfo
PropertyInfo
(索引器)的成员上声明参数。(2)
ConstructorInfo
PropertyInfo
将永远不会有返回参数。

假设您引用的是
out int foo
,则需要


如果需要返回值,请尝试,虽然我以前从未听说过。

您可以检查
参数info.Position==-1
…但是您的相等性检查似乎同样好…尽管在某些情况下它不能正确处理重写、接口或泛型类型。

您想知道该方法是否有out/ref参数吗?不。我想知道它是否是一个返回要清除该方法的参数,您需要ParameterInfo,它告诉您该方法的返回是否有任何自定义属性?@JeffN825,是的。这就是我要测试的。也许我不理解这个问题。这个的用法是什么?根据我的测试,
ReturnParameter
值不会显示在
GetParameters()
的结果中-我发现获得它的唯一方法是显式检查
ReturnParameter
属性。如果你这样做,你已经知道它是返回参数。(1)我不是要一个out参数。我要的是返回值。(2) 这并不是
IsRetval
的含义,所以要检查
IsRetval
是正确的,只是编译器通常不会设置它。“
属性[retval]指定接收成员返回值的参数。
”啊,我知道我忘记了什么