可能重复:
Convert c# by-reference type to the matching non-by-reference type
在编写一些涉及大量使用反射的代码时,我遇到了一个问题,我不知道如何识别“byref”参数的类型。让我用一些示例代码来说明:
class ReflectionTest {
public void Test()
MethodInfo mi = this.GetType().GetMethod("SomeMethod");
ParameterInfo pi = mi.GetParameters()[0];
// prints "System.Object"
Console.WriteLine(pi.ParameterType.ToString());
// prints "True"
Console.WriteLine(typeof(Object).Equals(pi.ParameterType));
ParameterInfo piRef = mi.GetParameters()[1];
// prints "System.Object&"
Console.WriteLine(piRef.ParameterType.ToString());
// prints "False"
Console.WriteLine(typeof(Object).Equals(piRef.ParameterType));
}
public void SomeMethod(object obj, ref object objRef) {
// whatever
}
}
因此,ref
参数的类型显然与System.Object
完全不同。嗯,公平,但我没有看到任何方式推断SomeType&
是对SomeType
类型的对象的引用 - 没有采用ToString()
表示,切断了“ &安培;”最后,尝试查找结果名称。肯定会有更系统的方法来做到这一点吗?
或者即使这是不可能的,我也必须反过来做:我需要做些什么来获得代表Type
的{{1}}对象(而不是普通{{1}那么我可以测试那个相等吗?