2014-10-05 2 views
1

System.Type 클래스는 리플렉션에 사용됩니다. System.Type에 정의 된 대부분의 구성원은 추상입니다. 이 코드에서 하면 FullName 속성은 하여 FullName 구현 System.TypeC# 클래스의 System.Type은 어떻게 작동합니까?

namespace ConsoleApplication93 
{ 
    class MyClass 
    { 
     int val; 
    } 

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

에 abstract로 선언 된 클래스 이름을 가져 오는 데 사용됩니다?


업데이트 :이 System.Type

public abstract string FullName { get; } 

를 정의하지만 추상적 그래서 곳이 속성의 실제 구현 방법 다음은

+0

추상적 인 경우에도 클래스는 여전히 유형이며 여전히 이름이 있습니다. 정확히 무엇을 요구하고 있는지 명확히 알지 못합니다. – Plutonix

+0

FullName은 System.Type에서 추상이므로 구현하지 않으면 사용할 수 없습니다. 나는 그것이 구현되는 곳을 묻는다. – Cody

+1

The General truth IS : 추상 클래스로부터의 메소드는 추상 클래스로부터 파생 된 클래스에서 구현된다. 추상 클래스는 추상 메소드와 구체적인 메소드를 모두 가질 수 있습니다. 클래스 내부에 인터페이스를 구현할 수는 있지만 클래스 자체는 항상 "구현"됩니다. – Yoda

답변

5

당신이 t.GetType()를 호출 할 경우, 당신은거야 typeof()에 의해 반환 된 실제 구현은이 경우 내부 클래스 System.RuntimeType인데, 소스는 here입니다.

+0

GetType() 구현은 어디에 있습니까 ?? – Cody

+1

GetType()은 [Object] (http://referencesource.microsoft.com/#mscorlib/system/object.cs)에서 구현되며 해당 구현은 extern으로 표시되고 CLR을 호출합니다. 숨겨진 구현 정보를 찾으려면 [IlSpy] (http://ilspy.net/)를 사용하십시오. – rene

+0

@rene System.Type은 추상적이며 FullName 속성이므로 위 코드가 어떻게 작동하는지, 실제 구현은 어디에 있습니까 System.Type의 FullName 속성 ? CLR이 코드를 제공합니까? – Cody

관련 문제