Мне нужно создать динамическое перечисление, а затем быть в состоянии получить тип с помощью Type.GetType (). Возможно ли это?
Приведенный ниже код создаст динамическое перечисление и попытается использовать его подходящее имя. Это нормально, если я сначала сохраню сборку (используя AssemblyBuilderAccess.RunAndSave). Однако это невозможно, если я использую только AssemblyBuilderAccess.Run; возникает ошибка BindingFailure; не удалось найти сборку. У меня сложилось впечатление, что опция «Выполнить» позволит создавать и использовать без фактического сохранения сборки (или без доступа к различным сборщикам).
(Примечание. Использование кода 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);
}/