共用方式為


TYPE_INFO

這個結構會指定不同的欄位型別的相關資訊。

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 + +]Contains a METADATA_TYPE structure if dwKind is TYPE_KIND_METADATA.

  • type.typePdb
    [只有 c + +]Contains a PDB_TYPE structure if dwKind is TYPE_KIND_PDB.

  • type.typeBuilt
    [只有 c + +]Contains a BUILT_TYPE structure if dwKind is TYPE_KIND_BUILT.

  • type.unused
    未使用的填補。

  • type
    聯集的名稱。

  • unionmember
    [C# 只]這為適當的結構的型別為基礎的封送處理dwKind。

備註

這個結構會傳遞至IDebugField::GetTypeInfo填滿其中的方法。 結構的內容解譯的方式根據dwKind欄位。

注意事項注意事項

[只有 c + +]如果dwKind等於TYPE_KIND_BUILT,那麼就必須釋放基礎IDebugField物件當終結TYPE_INFO結構。這是藉由呼叫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成員的TYPE_INFO 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

Namespace: Microsoft.VisualStudio.Debugger.Interop

組件: Microsoft.VisualStudio.Debugger.Interop.dll

請參閱

參考

結構和等位

dwTYPE_KIND

IDebugField::GetTypeInfo

METADATA_TYPE

PDB_TYPE

BUILT_TYPE