TYPE_INFO
此結構會指定欄位類型的各種資訊。
語法
成員
dwKind
來自 dwTYPE_KIND 列舉的值,決定如何解譯等位。
type.typeMeta
[僅限 C++]如果 dwKind
為 TYPE_KIND_METADATA
,則包含METADATA_TYPE結構。
type.typePdb
[僅限 C++]如果 dwKind
為 TYPE_KIND_PDB
,則包含PDB_TYPE結構。
type.typeBuilt
[僅限 C++]如果 dwKind
為 TYPE_KIND_BUILT
,則包含 BUILT_TYPE 結構。
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 |
範例
此範例示範如何在 C# 中解譯 unionmember
結構的成員 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