.NET 유형의 CIL에 액세스하는 데 사용할 수있는 라이브러리가 있습니까? 제가 가상 CilExtractor
가 수행 할 작업을 보여 보자프로그래밍 방식으로 .NET 유형의 CIL에 액세스
[Serializable]
public class Type_For_Extract_Cil_Test {
private int _field = 3;
public int Method(int value) {
checked {
return _field + value;
}
}
}
[Test]
public void Extract_Cil_For_Type_Test() {
string actualCil = CilExtractor.ExtractCil(typeof(Type_For_Extract_Cil_Test));
string expectedCil = @"
.class public auto ansi serializable beforefieldinit Type_For_Extract_Cil_Test
extends [mscorlib]System.Object
{
.method public hidebysig specialname rtspecialname instance void .ctor() cil managed
{
.maxstack 8
ldarg.0
ldc.i4.3
stfld int32 Type_For_Extract_Cil_Test::_field
ldarg.0
call instance void [mscorlib]System.Object::.ctor()
ret
}
.method public hidebysig instance int32 Method(int32 'value') cil managed
{
.maxstack 8
ldarg.0
ldfld int32 Type_For_Extract_Cil_Test::_field
ldarg.1
add.ovf
ret
}
.field private int32 _field
}";
// indentations and code formatting issues apart, this should succeed
Assert.AreEqual(expectedCil, actualCil);
}
을 내가 Mono.Cecil 또는 반사판이 작업을 수행 할 수 있습니다 알고 있지만 나는 또한 내가 이것을 달성하기 위해 많은 코드를 작성해야 알고있다. Reflector는 이미 UI에서이 작업을 수행하므로 간단한 메소드 호출과 같이이 기능에 액세스하는 간단한 방법이 없습니까? 이 특정 시나리오에 더 적합한 다른 라이브러리가 있습니까?
리플렉터 지배 시대에 나는 ildasm을 완전히 잊었습니다. 나를 상기시켜 줘서 고마워! –