동적 열거 형을 만들고 Type.GetType() 사용하여 형식을 가져올 수 있어야합니다. 이것이 가능한가?동적 열거 형 만들기 및 참조 시도 BindingFailure 함께 실패합니다
아래 코드는 동적 열거 형을 만들고 그 정규화 된 이름을 사용하려고 시도합니다. AssemblyBuilderAccess.RunAndSave를 사용하여 어셈블리를 처음 저장하는 경우에는 문제가 없습니다. 그러나 AssemblyBuilderAccess.Run 만 사용하는 경우에는이 작업을 수행 할 수 없습니다. BindingFailure 오류가 발생합니다. 어셈블리를 찾을 수 없습니다. 내 생각에 Run 옵션은 실제로 어셈블리를 저장하지 않고 (또는 다른 빌더에 액세스하지 않고도) 생성 및 사용을 허용합니다.
(참고 :.. Type.GetType()의 아래 코드 사용이 광산은 내가 그 코드를 변경할 수 없습니다)
가 어떻게, 어셈블리를 저장하지 않고, 그것을 동적 열거를 생성하고 참조 할 수 있습니다?
private Type CreateType()
{
// Define the assembly.
System.Reflection.Emit.AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(new System.Reflection.AssemblyName("temporaryAssembly"), AssemblyBuilderAccess.Run);
// Actually create it.
System.Reflection.Emit.ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("temporaryAssembly");
// Create the enum.
System.Reflection.Emit.EnumBuilder enumBuilder = moduleBuilder.DefineEnum("Temp", System.Reflection.TypeAttributes.Public, typeof(int));
/* Populate the enum. */
return enumBuilder.CreateType();
}
private void DoStuff()
{
Type t = CreateType();
Type createAnotherOfSameType = Type.GetType(t.AssemblyQualifiedName);
}/
두 번째 줄은 다른 어셈블리에서 수행됩니다. 나는 그 특정 코드를 사용하여 나중에 처리 할 어셈블리에 't'를 전달할 것이다. 위는 단지 설명을위한 것입니다. –
그건 그렇고, AssemblyQualifiedName 실제로 (겉으로보기) 올바른 정보를 반환합니다. –