我正在使用IMetaDataImport
API,并且我需要确定我的程序集中的类型定义是值类型还是引用类型。我没有在 API 中找到任何明确提供此信息的方法。但是,我可以很容易地获得基本类型并检查它是否是System.ValueType
.
我的问题是:基类是 CLI 元数据对类型是值类型这一事实进行编码的唯一方法,还是在某处有一些标志?
我正在使用IMetaDataImport
API,并且我需要确定我的程序集中的类型定义是值类型还是引用类型。我没有在 API 中找到任何明确提供此信息的方法。但是,我可以很容易地获得基本类型并检查它是否是System.ValueType
.
我的问题是:基类是 CLI 元数据对类型是值类型这一事实进行编码的唯一方法,还是在某处有一些标志?
没有直接标识值类型的标志。看起来检查基本类型以及其他一些事情是执行此操作的规范方法。
ECMA CLI 规范的第 II.10.1.3 节描述了这样的类型定义:
类型语义属性指定是否应定义接口、类或值类型。interface属性指定一个接口。如果此属性不存在并且定义扩展(直接或间接)
System.ValueType
,并且定义不是 forSystem.Enum
,则应定义值类型。否则,应定义一个类。
Type.IsValueType
房产是你要找的吗?