클래스 A의 단일 매개 변수 인스턴스를 받아들이고 B의 전달 된 인스턴스에서 메서드 B를 실행하는 일부 메서드를 동적으로 만들고 싶습니다. B에 int 유형의 매개 변수가 있습니다. 여기Reflection.Emit 동적으로 메소드를 만들려면
dynamicMethod(A a){
a.B(12);
}
내가 뭘하려 : 그래서 여기 스키마입니다
DynamicMethod method = new DynamicMethod(string.Empty, typeof(void), new[] { typeof(A) }, typeof(Program));
MethodInfo methodB = typeof(A).GetMethod("B", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, new Type[] { }, null);
ILGenerator gen = method.GetILGenerator();
gen.Emit(OpCodes.Nop);
gen.Emit(OpCodes.Ldarg_0);
gen.Emit(OpCodes.Ldarg_S, 100);
gen.Emit(OpCodes.Call, methodB);
는 그러나 컴파일러는 CLR이 방법을 발견하지 않는다는 것을 알려줍니다. 그걸 도와 줄 수 있니?
'System.Linq.Expressions'를 사용하여 표현식 트리를 대신 컴파일 할 수 있습니다. 쉽습니다. –