При использовании оператора typeof
для типа, созданного с помощью TypeBuilder, оператор вернет null.
Мне любопытно, почему это случается и как это предотвратить.
Я начинаю думать, что это ошибка VS в ближайшем окне, но я не совсем уверен. Очень легко сначала обвинить других.
Хорошо ... код для воспроизведения проблемы:
static void Main()
{
AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(
new AssemblyName("MyAssembly"),
AssemblyBuilderAccess.RunAndSave);
ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyModule");
TypeBuilder typeBuilder = moduleBuilder.DefineType("MyType", TypeAttributes.Public, typeof(ArrayList));
ArrayList o = (ArrayList)Activator.CreateInstance(typeBuilder.CreateType());
Console.WriteLine(o.GetType().Name);
}
Если вы поставите точку останова после переменной o
и наберете typeof (MyType)
в VS Immediate Windows вы столкнетесь с проблемой.