0
Mono.Cecil을 사용하여 특정 메서드에 전달 된 모든 인수를 추출하려고합니다.
프로젝트가 빌드 된 직후 실행되는 사후 처리 스크립트에서 모든 메소드 호출을 찾고 함수에 전달 된 인수의 유형을 추출 할 수도 있습니다. 그러나 실제 가치를 얻을 수는 없습니다 ... Mono.Cecil에서도 마찬가지입니다. 그렇다면 어떤 가치를 볼 필요가 있습니까?Mono.Cecil을 사용하여 메서드 호출 인수 추출
여기에 내 현재 코드 :
List<MethodDefinition> methods = new List<MethodDefinition>();
foreach (ModuleDefinition _module in assembly.Modules) {
foreach (TypeDefinition _type in _module.Types) {
methods.AddRange (_type.Methods);
}
}
var uiExtensionMethod = methods
.Where(m => m.DeclaringType.Name == "SetCustomText").FirstOrDefault();
var instructions = uiExtensionMethod.Body.Instructions;
var count = instructions.Count;
var instructionArray = instructions.ToArray();
for (int i = 0; i < count; i++) {
if (instructionArray [i] != null) {
if (instructionArray [i].Operand != null) {
var paramType = instructionArray [i].Operand.ToString();
// So here I have the type of the parameter, but I cannot get the value...
}
}
}
값으로 무엇을 의미합니까? 'Console.WriteLine ("Hello")',''Hello "'는 값이 될 것입니까? 하지만 종종 계산됩니다 ...'string temp = "HELLO".ToLower(); Console.WriteLine (temp)'... 가장 쉬운 경우에는 거의 불가능한 문제를 해결하려고합니다. – xanatos
Mono.Cecil을 사용하면 실행중인 프로그램이 아니라 dll을 볼 수 있습니다 ... 이는 시체를 해부하여 사람이 생각하는 것을 이해하려고하는 것과 같습니다. – xanatos
나는이 사실을 완전히 알고 있습니다. 난 단지 "안녕하세요"와 함께 귀하의 예를 들어, 메서드의 호출을 직접해야합니다. 나는 dll을 보려고하는 것을 알고있다. ... – Tom