此结构指定各种有关字段类型的信息。
struct _tagTYPE_INFO_UNION {
dwTYPE_KIND dwKind;
union {
METADATA_TYPE typeMeta;
PDB_TYPE typePdb;
BUILT_TYPE typeBuilt;
DWORD unused;
} type;
} TYPE_INFO;
public struct TYPE_INFO {
public uint dwKind;
public IntPtr unionmember;
};
参数
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的相应 framework 类型。
备注
此结构传递给该方法的 IDebugField:: GetTypeInfo 方法。 结构的内容如何解释基于 dwKind 字段。
备注
只有 C++ [],如果 dwKind 等于 TYPE_KIND_BUILT,然后释放基础 IDebugField 对象是必要的,因为销毁 TYPE_INFO framework 的访问。这是通过调用 typeInfo.type.typeBuilt.pUnderlyingField->Release()完成。
[仅限于 c#] 下表显示如何解释每 unionmember 成员类型。 示例显示了如何为一种类型执行。
dwKind |
解释了unionmember |
---|---|
TYPE_KIND_METADATA |
|
TYPE_KIND_PDB |
|
TYPE_KIND_BUILT |
示例
此示例演示如何解释 TYPE_INFO 结构的 unionmember 成员在 C# 中。 此示例仅显示介绍了一种类型 (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