Udostępnij przez


TYPE_INFO

Ta struktura określa różne rodzaje informacji o typie pola.

Składnia

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

Członkowie

dwKind
Wartość z wyliczenia dwTYPE_KIND , która określa sposób interpretowania unii.

type.typeMeta
[Tylko C++ ] Zawiera strukturę METADATA_TYPE , jeśli dwKind ma wartość TYPE_KIND_METADATA.

type.typePdb
[Tylko C++ ] Zawiera strukturę PDB_TYPE , jeśli dwKind ma wartość TYPE_KIND_PDB.

type.typeBuilt
[Tylko C++ ] Zawiera strukturę BUILT_TYPE , jeśli dwKind ma wartość TYPE_KIND_BUILT.

type.unused
Nieużywane dopełnienie.

type
Nazwa unii.

unionmember
[Tylko C# ] Przesłoń go do odpowiedniego typu struktury na dwKindpodstawie .

Uwagi

Ta struktura jest przekazywana do metody GetTypeInfo , w której jest wypełniana. Sposób interpretowania zawartości struktury zależy od dwKind pola.

Uwaga

[Tylko C++ ] Jeśli dwKind wartość jest równa TYPE_KIND_BUILT, konieczne jest zwolnienie bazowego obiektu IDebugField podczas niszczenia TYPE_INFO struktury. Odbywa się to przez wywołanie metody typeInfo.type.typeBuilt.pUnderlyingField->Release().

[Tylko C# ] W poniższej tabeli przedstawiono sposób interpretowania unionmember elementu członkowskiego dla każdego typu. W przykładzie pokazano, jak to zrobić dla jednego typu.

dwKind unionmember interpretowane jako
TYPE_KIND_METADATA METADATA_TYPE
TYPE_KIND_PDB PDB_TYPE
TYPE_KIND_BUILT BUILT_TYPE

Przykład

W tym przykładzie pokazano, jak interpretować unionmember element członkowski TYPE_INFO struktury w języku C#. W tym przykładzie pokazano interpretację tylko jednego typu (TYPE_KIND_METADATA), ale pozostałe są interpretowane w dokładnie taki sam sposób.

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));
            }
        }
    }
}

Wymagania

Nagłówek: sh.h

Przestrzeń nazw: Microsoft.VisualStudio.Debugger.Interop

Zestaw: Microsoft.VisualStudio.Debugger.Interop.dll

Zobacz też