TYPE_INFO
Essa estrutura especifica vários tipos de informações sobre o tipo de um campo.
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;
};
Parâmetros
dwKind
Um valor a partir do dwTYPE_KIND enumeração que determina como interpretar a união.Type.typeMeta
[Apenas C++] Contains a METADATA_TYPE structure if dwKind is TYPE_KIND_METADATA.Type.typePdb
[Apenas C++] Contains a PDB_TYPE structure if dwKind is TYPE_KIND_PDB.Type.typeBuilt
[Apenas C++] Contains a BUILT_TYPE structure if dwKind is TYPE_KIND_BUILT.Type.Unused
Preenchimento não utilizado.tipo
Nome da união.unionmember
[C# somente] Marshal isso para o tipo de estrutura apropriada com base em dwKind.
Comentários
Essa estrutura é passada para o IDebugField::GetTypeInfo método onde ele é preenchido. Como o conteúdo da estrutura é interpretado se baseia o dwKind campo.
Dica
[Apenas C++] Se dwKind é igual a TYPE_KIND_BUILT, e em seguida, é necessário liberar a base IDebugField de objeto ao destruir o TYPE_INFO estrutura.Isso é feito chamando typeInfo.type.typeBuilt.pUnderlyingField->Release().
[C# somente] A tabela a seguir mostra como interpretar a unionmember membro para cada tipo de tipo. O exemplo mostra como isso é feito para um tipo de.
dwKind |
unionmemberinterpretado como |
---|---|
TYPE_KIND_METADATA |
|
TYPE_KIND_PDB |
|
TYPE_KIND_BUILT |
Exemplo
Este exemplo mostra como interpretar a unionmember membro da TYPE_INFO estrutura no C#. Este exemplo mostra apenas um tipo de interpretação (TYPE_KIND_METADATA), mas os outros são interpretados 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
Namespace: Microsoft.VisualStudio.Debugger.Interop
Assembly: Microsoft.VisualStudio.Debugger.Interop.dll