2013-05-04 2 views
8

정적 생성자가있는 클래스가 있습니다.어떤 멤버도 호출하지 않고 정적 생성자를 호출하는 방법

생성자가 아직 호출되지 않은 경우에만 해당 구성원을 호출하거나 사용하지 않고 정적 생성자를 호출하려고합니다.

리플렉션을 사용해 보았습니다. 리플렉션을 사용하면 정적 생성자 (여러 번)를 호출 할 수 있지만 이전에 호출되었는지 확인할 수 없습니다.

어떻게하면됩니까?

편집
이 단지 내가 무슨 말을하고 하나의 클래스, 그것은 더있을 수 없습니다. 말하자면 모든 클래스는 특별한 속성으로 표시되어 있습니다.

+1

이 플래그를 설정 (내가 정확히 당신이 ... 뭘하려고했는지 이해한다는 가정) RuntimeHelpers.RunClassConstructor 방법을 사용할 수 있습니다. 정적 상태를 설정하는 경우 정적 생성자 만 실행하면되므로 해당 상태를 설정하고 생성자가 다시 실행될 경우 설정 상태인지 확인하면됩니다. –

+0

@ 로버트 : 제네릭 솔루션이 필요합니다. 나는 얼마나 많은 수업과 어떤 수업을 미리 알지 못한다. 그가 생성자를 호출 할 때 .NET이 플래그를 설정하지 않기 때문에이 플래그는 도움이되지 않습니다. –

+0

당신은 지금 호기심이 많습니다. 어쨌든 어떤 멤버가 호출되기 전에 생성자를 실행해야하는 이유는 무엇입니까? (정적 생성자는 첫 번째 메서드 또는 속성 호출을 실행하기 직전에 호출됩니다. 정적 상태는 첫 번째 메서드 또는 속성을 만질 때까지 부적합합니다). –

답변

24

당신은

RuntimeHelpers.RunClassConstructor(typeof(YourType).TypeHandle); 
+0

생성자를 한 번만 실행합니까? –

+1

@RobertHarvey, 네, 여러 번 호출하더라도 정적 생성자를 한 번만 실행합니다. –

+1

네, 방금 확인한 결과입니다. –

관련 문제