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);
}
如果您在变量后放置一个断点并在 VS Immediate Windows 中o
键入,您将遇到问题。typeof(MyType)