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]指定接收成员返回值的参数。
”啊,我知道我忘记了什么