2010-07-07 4 views

답변

8

mscorlib에 대한 ModuleDefinition 얻기는 매우 쉽습니다. 다음은 간단한 방법 :

ModuleDefinition corlib = ModuleDefinition.ReadModule (typeof (object).Module.FullyQualifiedName); 

그러나 당신이 mscorlib에 메소드를 호출하는 코드를 삽입하는 경우, 당신은 반드시 모듈을 직접로드 할 필요가 없습니다. 예 :

MethodDefinition method = ...; 
ILProcessor il = method.Body.GetILProcessor(); 

Instruction call_writeline = il.Create (
    OpCodes.Call, 
    method.Module.Import (typeof (Console).GetMethod ("WriteLine", Type.EmptyTypes))); 

Console.WriteLine();을 호출하는 명령을 만듭니다.

설명서는 wiki의 importing 페이지를 참조하십시오.

+2

Excellect, thanks! .NET 반사 객체도 사용할 수 있다는 것을 알지 못했습니다. Cecil 설명서는 매우 어렵습니다./ – thecoop

+1

이 코드는 .NET 버전 실행 어셈블리의 mscorlib에서 메서드를 가져옵니다. 따라서 .NET 2.0 어셈블리를 열고 .NET 4.0에서 위의 코드를 실행하여 수정하면 수정 된 어셈블리에는 2.0 및 4.0 mscorlib에 대한 참조가 포함됩니다. 이는 의도 한 것이 아닙니다. –

관련 문제