8
나는 mscorlib에서 메서드를 호출하는 일리노이를 작성하려고하지만 & 메서드를 실제로 참조하기 위해 ModuleDefinition
을 mscorlib에 가져 오는 방법을 알아낼 수 없으며 & Google 설명서가 부족합니다.Mono-Cecil : mscorlib에 대한 ModuleDefinition은 어떻게 얻을 수 있습니까?
나는 mscorlib에서 메서드를 호출하는 일리노이를 작성하려고하지만 & 메서드를 실제로 참조하기 위해 ModuleDefinition
을 mscorlib에 가져 오는 방법을 알아낼 수 없으며 & Google 설명서가 부족합니다.Mono-Cecil : mscorlib에 대한 ModuleDefinition은 어떻게 얻을 수 있습니까?
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 페이지를 참조하십시오.
Excellect, thanks! .NET 반사 객체도 사용할 수 있다는 것을 알지 못했습니다. Cecil 설명서는 매우 어렵습니다./ – thecoop
이 코드는 .NET 버전 실행 어셈블리의 mscorlib에서 메서드를 가져옵니다. 따라서 .NET 2.0 어셈블리를 열고 .NET 4.0에서 위의 코드를 실행하여 수정하면 수정 된 어셈블리에는 2.0 및 4.0 mscorlib에 대한 참조가 포함됩니다. 이는 의도 한 것이 아닙니다. –