当我从通用TypeBuilder
创建专门类型时,它返回TypeBuilderInstantiation
而不是RuntimeType
,它不支持IsAssignableFrom
之类的方法。有办法解决这个问题吗?
这是一个片段:
TypeBuilder stackTypeBuilder = moduleBuilder.DefineType("Stack", TypeAttributes.Public);
stackTypeBuilder.DefineGenericParameters(new[] {"T"});
var specializedType = stackTypeBuilder.MakeGenericType(new[] {typeof (int)});
此处specializedType
是TypeBuilderInstantiation
的实例,因此以下代码将引发异常:
bool assignable = specializedType.IsAssignableFrom(typeof (int));
在这个例子中,我可以使用:
创建一个类型stackTypeBuilder.CreateType().MakeGenericType(new [] {typeof(int)});
这将给我RuntimeType
,但在我的编译器中,我无法在此阶段创建类型。