2009-07-30 7 views
4

정적 생성자 내에서 GetType에 해당하는 것을 얻을 수있는 방법이 있습니까?정적 생성자에서 TypeInfo 가져 오기

정적 생성자 내에서 사용할 수있는 속성을 반복하고 싶지만 GetType은 인스턴스 메서드입니까? 왜 이런거야? typeinfo는 정적 컨텍스트에 있어야합니다. 이 문제를 해결할 방법이 있습니까? 당신은 항상 실제 유형을 알고 있기 때문에

답변

2

그냥

Type type = typeof(TheCurrentType); 

그것은 이것보다 더 복잡 않을 것입니다 사용; 정적 메서드를 처리 할 다형성이 없습니다.

+0

그러나 런타임 유형을 알아야합니다. 이 클래스를 상속 한 모든 런타임 유형 (런타임에)을 등록하고 싶습니다. 모든 속성과 속성을 통해 사용자 정의 엔진에 등록해야합니다. 앱 수명 동안 유형마다 한 번 수행해야합니다. 각 서브 클래스에 대해 런타임 유형을 해결할 수있는 방법이 있습니까? – Shimmy

+0

@Shimmy 정적 메서드에는 다형성이 없습니다. 정적 메서드는 파생 된 형식과 상관없이 선언 된 형식에 속합니다. –

+0

하위 클래스에서 호출 할 기본 유형에 간단한 보호 정적 메소드 RegisterMetadata (유형 유형)를 작성하기로 결정했습니다. 것은 모든 하위 클래스의 정적 ctor에서이 메서드를 호출 할 수있는 방법이 없다는 것입니다. 감사. – Shimmy

0

파생 형식을 얻을 수 있다고 생각하지 않습니다 (현재 형식에서 파생되는 것을보기 위해 모든 형식을 반복하는 것을 제외하고). 현재 유형을 얻으려면 다음을 수행 할 수 있습니다.

Type currentType = (new StackFrame()).GetMethod().DeclaringType;