TYPE_INFO
Essa estrutura especifica vários tipos de informações sobre o tipo de um campo.
Sintaxe
Membros
dwKind
Um valor da enumeração dwTYPE_KIND que determina como interpretar a união.
type.typeMeta
[Somente C++] Contém uma estrutura METADATA_TYPE se dwKind
for TYPE_KIND_METADATA
.
type.typePdb
[Somente C++] Contém uma estrutura PDB_TYPE se dwKind
for TYPE_KIND_PDB
.
type.typeBuilt
[Somente C++] Contém uma estrutura BUILT_TYPE se dwKind
for TYPE_KIND_BUILT
.
type.unused
Preenchimento não utilizado.
type
Nome do sindicato.
unionmember
[Somente C#] Marechal isso para o tipo de estrutura apropriada com base em dwKind
.
Comentários
Essa estrutura é passada para o método GetTypeInfo, onde é preenchida. A forma como os conteúdos da estrutura são interpretados é baseada no dwKind
campo.
Observação
[Somente C++] Se dwKind
for TYPE_KIND_BUILT
igual a , então é necessário liberar o objeto IDebugField subjacente ao destruir a TYPE_INFO
estrutura. Isso é feito chamando typeInfo.type.typeBuilt.pUnderlyingField->Release()
.
[Somente C#] A tabela a seguir mostra como interpretar o unionmember
membro para cada tipo de tipo. O exemplo mostra como isso é feito para um tipo de tipo.
dwKind |
unionmember interpretada como |
---|---|
TYPE_KIND_METADATA |
METADATA_TYPE |
TYPE_KIND_PDB |
PDB_TYPE |
TYPE_KIND_BUILT |
BUILT_TYPE |
Exemplo
Este exemplo mostra como interpretar o unionmember
TYPE_INFO
membro da estrutura em C#. Este exemplo mostra a interpretação de apenas um tipo (TYPE_KIND_METADATA
), mas os outros são interpretados exatamente da mesma maneira.
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));
}
}
}
}
Requisitos
Cabeçalho: sh.h
Espaço para nome: Microsoft.VisualStudio.Debugger.Interop
Assembly: Microsoft.VisualStudio.Debugger.Interop.dll