C#获取引用类型的基类型

时间:2012-01-17 09:18:31

标签: c# reflection types reference

  

可能重复:
  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}那么我可以测试那个相等吗?

0 个答案:

没有答案