동적으로 생성 된 어셈블리의 "일반"어셈블리에있는 메서드를 호출 할 수 있습니까?동적 어셈블리에서 영구 어셈블리에 대한 메서드 실행
예를 들어, 어셈블리 B가 동적 조립체 (A) 및 어셈블리에서 (발광 통해) 구성되는 B지도 방법은 MissingMethodExcetion 실행될 때 어셈블리 A.
public interface IMapper
{
void Map();
}
public void CreateDynamic() {
AppDomain app = AppDomain.CurrentDomain;
AssemblyName name = new AssemblyName("assemblyB");
AssemblyBuilder assembly = app
.DefineDynamicAssembly(name, AssemblyBuilderAccess.Run);
ModuleBuilder module = assembly
.DefineDynamicModule(assembly.GetName().Name, "b.dll");
TypeBuilder type = module.DefineType("MyType",
TypeAttributes.Public |
TypeAttributes.Class |
TypeAttributes.AutoClass |
TypeAttributes.AutoLayout, null, new[] {typeof (IMapper)});
MethodBuilder method = type
.DefineMethod("Map",
MethodAttributes.Public |
MethodAttributes.HideBySig |
MethodAttributes.Virtual);
ILGenerator il = method.GetILGenerator();
Func<int, TimeSpan> func = i => TimeSpan.FromSeconds(i);
il.Emit(OpCodes.Ldc_I4_S, 10);
il.Emit(OpCodes.Callvirt, func.Method);
il.Emit(OpCodes.Ret);
Type t = type.CreateType();
IMapper mapper = (IMapper) Activator.CreateInstance(t);
mapper.Map();
}
에 정의 된 정적 메소드를 호출해야 나는 던져져 이제는 그 이유가되지 않습니다.
, 코드 샘플을 제공 및/또는 내가 진짜 공공의 방법을 만들 수 없습니다이 http://stackoverflow.com/questions/11908156/call-static-method-with-reflection –