TYPE_INFO

此結構會指定欄位類型的各種資訊。

語法

public struct TYPE_INFO {
   public uint   dwKind;
   public IntPtr unionmember;
};

成員

dwKind
來自 dwTYPE_KIND 列舉的值,決定如何解譯等位。

type.typeMeta
[僅限 C++]如果 dwKindTYPE_KIND_METADATA,則包含METADATA_TYPE結構。

type.typePdb
[僅限 C++]如果 dwKindTYPE_KIND_PDB,則包含PDB_TYPE結構。

type.typeBuilt
[僅限 C++]如果 dwKindTYPE_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

另請參閱