C#中的System.Type如何工作?

Cod*_*ody 1 c# system.reflection

由于System.Type类用于反射.System.Type中定义的大多数成员都是抽象的.在此代码中,FullName属性用于获取类名,该名称在System.Type中声明为abstract

namespace ConsoleApplication93
{
    class MyClass
    {
        int val;
    }

    class Program
    {
        static void Main(string[] args)
        {
            Type t = typeof(MyClass);
            Console.WriteLine(t.FullName);
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

FullName实现在哪里?


更新:这是System.Type定义的方式

    public abstract string FullName { get; }
Run Code Online (Sandbox Code Playgroud)

但它是抽象的,所以这个属性的实际实现在哪里

Cod*_*ter 6

如果你打电话t.GetType(),你会发现返回的实际实现typeof()是在这种情况下的内部类System.RuntimeType,源在这里可用.

  • @Cody,正如CodeCaster所指出的,RuntimeType实现了FullName属性. (2认同)