초기화 :모노 세실 - 나는 다음과 같은 방법이 지역 변수
public void DoSomething()
{
Console.WriteLine("");
}
내가 모노 세실이 코드를 수정할합니다. 나는 방법 내에서 사용자 정의 클래스의 인스턴스를 만들려면 :
public void DoSomething()
{
MyClass instance = new MyClass();
Console.WriteLine("");
}
현재 나는 다음과 같은 코드를 사용 : 변경 사항을 적용한 후
var constructorInfo = typeof(MyClass).GetConstructor(new Type[] { });
MethodReference myClassConstructor = targetAssembly.MainModule.Import(constructorInfo);
var processor = targetMethod.Body.GetILProcessor();
var firstInstruction = targetMethod.Body.Instructions[1];
var instructions = new List<Instruction>() {
processor.Create(OpCodes.Newobj, myClassConstructor),
processor.Create(OpCodes.Stloc_0)
};
foreach (var instruction in instructions)
{
processor.InsertBefore(firstInstruction, instruction);
}
을, 프로그램이 잘못하고 실행할 수 없습니다. 내가 생성 된 코드를보고 'IL DASM'를 사용하는 경우 다음 문이 없습니다 : 내가 직접 전체 코드를 컴파일하는 것처럼
.locals init ([0] class [MyAssembly]MyNamespace.MyClass instance)
일리노이의 나머지는 동일합니다. 내가 뭘 잘못하고 있는지 아이디어가 있으십니까?
도움 주셔서 감사합니다. 변수를 추가 할 수있었습니다. 내가 아직 해당 생성자에 대한 호출로 초기화하는 데 문제가있다. – Daniel