2012-05-17 3 views
2

Reflection.Emit을 통해 정적 필드 num1, num2 등이있는 유형을 생성 중입니다.정적 필드를로드하는 방법은 무엇입니까?

이제 정적 메서드의 평가 스택에 생성 된 형식의 정적 필드 내용을로드하는 코드를 내보내는 방법을 모르겠습니다. 지금까지 IS 시도하는 것 :

generator.Emit(Opcodes.Ldarg, 0); 
generator.Emit(Opcodes.Ldfld, "num1"); 

을하지만 정적 메소드에 공급되지 않는 '이'에 인스턴스 필드를로드하려고하기 때문에 분명히이 작동하지 않을 수 있습니다.

정적 필드에 액세스하려면 어떤 opcode를 사용해야합니까?

답변

12

Opcodes.Ldsfld

그래서, 나는, 수 당신이 generator.Emit(Opcodes.ldsfld, num1);

+1

를 통해 스택에로드 할 수 있습니다, 당신이 전에 어딘가에 FieldBuilder num1 = ... 같은 NUM1을 만든 가정 그리고의 fieldInfo 인스턴스가없는 경우 그러나 나는 이름이 해? (나는 필드를 만들었지 만 다른 방법으로). – user35443

+0

글쎄, 그것은 까다로울 것입니다. 적어도 TypeBuilder를 따라 가야하므로 거기에서 FieldInfo를 가져올 수 있습니다. –

+0

확인. 고맙습니다 . – user35443