Freigeben über


TYPE_INFO

Diese Struktur gibt verschiedene Arten von Informationen über den Typ eines Felds an.

Syntax

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

Mitglieder

dwKind
Ein Wert aus der dwTYPE_KIND-Aufzählung , der bestimmt, wie die Union interpretiert wird.

type.typeMeta
[Nur C++] Enthält eine METADATA_TYPE Struktur, wenn dwKind dies der Wert ist TYPE_KIND_METADATA.

type.typePdb
[Nur C++] Enthält eine PDB_TYPE Struktur, wenn dwKind dies der Wert ist TYPE_KIND_PDB.

type.typeBuilt
[Nur C++] Enthält eine BUILT_TYPE Struktur, falls dwKind vorhanden.TYPE_KIND_BUILT

type.unused
Nicht verwendeter Abstand.

type
Name der Vereinigung.

unionmember
[Nur C#] Marshal this to the appropriate structure type based on dwKind.

Hinweise

Diese Struktur wird an die GetTypeInfo-Methode übergeben, in der sie ausgefüllt wird. Wie der Inhalt der Struktur interpretiert wird, basiert auf dem dwKind Feld.

Hinweis

[Nur C++] Wenn dwKind gleich TYPE_KIND_BUILT, ist es erforderlich, das zugrunde liegende IDebugField -Objekt freizugeben, wenn die TYPE_INFO Struktur zerstört wird. Hierzu wird typeInfo.type.typeBuilt.pUnderlyingField->Release() aufgerufen.

[Nur C#] In der folgenden Tabelle wird gezeigt, wie das unionmember Element für jede Art von Typ interpretiert wird. Das Beispiel zeigt, wie dies für eine Art von Typ erfolgt.

dwKind unionmember interpretiert als
TYPE_KIND_METADATA METADATA_TYPE
TYPE_KIND_PDB PDB_TYPE
TYPE_KIND_BUILT BUILT_TYPE

Beispiel

In diesem Beispiel wird gezeigt, wie das unionmember Element der TYPE_INFO Struktur in C# interpretiert wird. Dieses Beispiel zeigt, dass nur ein Typ (TYPE_KIND_METADATA) interpretiert wird, die anderen jedoch genau auf die gleiche Weise interpretiert werden.

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

Anforderungen

Kopfzeile: sh.h

Namespace: Microsoft.VisualStudio.Debugger.Interop

Assembly: Microsoft.VisualStudio.Debugger.Interop.dll

Siehe auch