TYPE_INFO

Essa estrutura especifica vários tipos de informações sobre o tipo de um campo.

Sintaxe

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

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_BUILTigual 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 unionmemberTYPE_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

Confira também