此结构指定有关字段类型的各种信息。
语法
成员
dwKind
dwTYPE_KIND枚举中的一个值,用于确定如何解释联合。
type.typeMeta
[仅限 C++]包含一个 METADATA_TYPE 结构(如果 dwKind 为 TYPE_KIND_METADATA)。
type.typePdb
[仅限 C++]包含一个 PDB_TYPE 结构(如果 dwKind 为 TYPE_KIND_PDB)。
type.typeBuilt
[仅限 C++]包含一个 BUILT_TYPE 结构(如果 dwKind 为 TYPE_KIND_BUILT)。
type.unused
未使用的填充。
type
联合的名称。
unionmember
[仅限 C#]将此封送给基于 dwKind的相应结构类型。
注解
此结构将 传递到填充它的 GetTypeInfo 方法。 如何解释结构的内容基于 dwKind 字段。
注意
[仅限 C++]如果dwKind相TYPE_KIND_BUILT等,则在销毁TYPE_INFO结构时需要释放基础 IDebugField 对象。 可以通过调用 typeInfo.type.typeBuilt.pUnderlyingField->Release() 来完成此操作。
[仅限 C#]下表显示了如何解释 unionmember 每种类型的成员。 该示例演示了如何对一种类型执行此操作。
dwKind |
unionmember 解释为 |
|---|---|
TYPE_KIND_METADATA |
METADATA_TYPE |
TYPE_KIND_PDB |
PDB_TYPE |
TYPE_KIND_BUILT |
BUILT_TYPE |
示例
此示例演示如何解释 unionmember C# 中结构的成员 TYPE_INFO 。 此示例仅显示解释一种类型(TYPE_KIND_METADATA),但其他类型以完全相同的方式进行解释。
using System;
using System.Runtime.Interop.Services;
using Microsoft.VisualStudio.Debugger.Interop;
namespace MyPackage
{
public class MyClass
{
public void Interpret(TYPE_INFO ti)
{
if (ti.dwKind == (uint)enum_dwTypeKind.TYPE_KIND_METADATA)
{
METADATA_TYPE dataType = (METADATA_TYPE)Marshal.PtrToStructure(ti.unionmember,
typeof(METADATA_TYPE));
}
}
}
}
要求
标头:sh.h
命名空间:Microsoft.VisualStudio.Debugger.Interop
程序集:Microsoft.VisualStudio.Debugger.Interop.dll