获取动态类型的类类型?

时间:2011-11-24 16:48:32

标签: c# .net dynamic-data

我写了一些代码:

    public static object func()
    {
        return new { a = 1, b = 2 };
    }

   Console.WriteLine((func() as dynamic).a); //returns '1'.

如果我能做到:func() as dynamic那么动态应该是某种引用类型/类。

我找了它的Class类型但找不到任何(通过反射器)。

它的类型是什么? (参考类型)?

1 个答案:

答案 0 :(得分:6)

您可以正常通过GetType()获取类型。

这是一种匿名类型,它是(作为实现细节)一种通用类型的形式。该类型的名称在c#中故意不可发音。

如果你查看反射器,可能有一个内部泛型类型,某处以'2结尾(表示2个泛型类型参数),分别有第一个和第二个泛型类型参数的两个属性“a”和“b” 。它是一个类,所以是引用类型。

作为说明:

new { a = true, b = 123.45 }

实际上会使用相同的泛型类型,但具有不同的泛型类型参数。

也;使用dynamic不会更改对象 - 它只会更改其访问方式。