共用方式為


TYPE_INFO

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

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

語法

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結構如果dwKindTYPE_KIND_METADATA

type.typePdb
[只有 c + +]包含PDB_TYPE結構如果dwKindTYPE_KIND_PDB

type.typeBuilt
[只有 c + +]包含BUILT_TYPE結構如果dwKindTYPE_KIND_BUILT

type.unused
未使用的填補。

類型
聯集的名稱。

unionmember
[僅限 C#]這為適當的結構類型為基礎的封送處理dwKind

備註

此結構會傳遞至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_INFOC# 中的結構。 此範例顯示解譯只有一個型別 (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

另請參閱

結構和等位
dwTYPE_KIND
GetTypeInfo
METADATA_TYPE
PDB_TYPE
BUILT_TYPE