获取动态类型的Class类型

本文关键字:类型 Class 获取 动态 | 更新日期: 2023-09-27 18:15:33

我写了一些代码:

    public static object func()
    {
        return new { a = 1, b = 2 };
    }
   Console.WriteLine((func() as dynamic).a); //returns '1'.

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

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

它的类型是什么?

获取动态类型的Class类型

您可以像往常一样通过GetType()获取类型

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

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

作为提示:

new { a = true, b = 123.45 }

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

也;使用dynamic并不会改变对象—它只会改变访问它的方式。