Freigeben über


Marshal.GetITypeInfoForType-Methode

Gibt eine ITypeInfo-Schnittstelle aus einem verwalteten Typ zurück.

Namespace: System.Runtime.InteropServices
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
Public Shared Function GetITypeInfoForType ( _
    t As Type _
) As IntPtr
'Usage
Dim t As Type
Dim returnValue As IntPtr

returnValue = Marshal.GetITypeInfoForType(t)
public static IntPtr GetITypeInfoForType (
    Type t
)
public:
static IntPtr GetITypeInfoForType (
    Type^ t
)
public static IntPtr GetITypeInfoForType (
    Type t
)
public static function GetITypeInfoForType (
    t : Type
) : IntPtr

Parameter

  • t
    Der Type, dessen ITypeInfo-Schnittstelle angefordert wird.

Rückgabewert

Der ITypeInfo-Zeiger für den t-Parameter.

Ausnahmen

Ausnahmetyp Bedingung

ArgumentException

t ist kein für COM sichtbarer Typ.

COMException

Für die Assembly, die den Typ enthält, wird eine Typbibliothek registriert, die Typdefinition kann jedoch nicht gefunden werden.

Hinweise

Diese Methode gibt einen Zeiger auf eine ITypeInfo-Implementierung zurück, die auf dem ursprünglichen Typ basiert. Das Aufrufen eines Objekts mit GetITypeInfoForType bewirkt, dass der Verweiszähler für den Schnittstellenzeiger vor der Rückgabe des Zeigers inkrementiert wird. Verwenden Sie immer Marshal.Release, um den Verweiszähler zu dekrementieren, nachdem die Verarbeitung des Zeigers abgeschlossen ist. Sie können System.Runtime.InteropServices.MarshalAsAttribute anwenden und so das Standardverhalten des Interop-Marshalling durch diesen benutzerdefinierten Marshaller ersetzen. Weitere Informationen zu ITypeInfo finden Sie in der MSDN Library.

Hinweis

Diese Methode verwendet SecurityAction.LinkDemand, um einen Aufruf aus nicht vertrauenswürdigem Code zu verhindern. Nur der direkte Aufrufer muss über die SecurityPermissionAttribute.UnmanagedCode-Berechtigung verfügen. Wenn der Code aus teilweise vertrauenswürdigem Code aufgerufen werden kann, dürfen Benutzereingaben nicht ohne Validierung an Methoden der Marshal-Klasse übergeben werden. Wichtige Einschränkungen bei der Verwendung des LinkDemand-Members finden Sie unter "Demand" und "LinkDemand".

Beispiel

Im folgenden Codebeispiel wird veranschaulicht, wie mithilfe der GetITypeInfoForType-Methode für einen Typ ein Zeiger auf die ITypeInfo-Schnittstelle abgerufen wird.

Imports System.Runtime.InteropServices

Module Program


    Sub Run()

        ' Dim a pointer
        Dim pointer As IntPtr

        Console.WriteLine("Calling Marshal.GetIUnknownForObjectInContext...")

        ' Get the ITypeInfo pointer for an Object type
        pointer = Marshal.GetITypeInfoForType(Type.GetType("System.Object"))

        Console.WriteLine("Calling Marshal.Release...")

        ' Always call Marshal.Release to decrement the reference count.
        Marshal.Release(pointer)



    End Sub

    Sub Main(ByVal args() As String)

        Run()

    End Sub

End Module

using System;
using System.Runtime.InteropServices;

class Program
{

    static void Run()
    {
        Console.WriteLine("Calling Marshal.GetITypeInfoForType...");

        // Get the ITypeInfo pointer for an Object type
        IntPtr pointer = Marshal.GetITypeInfoForType(typeof(object));

        Console.WriteLine("Calling Marshal.Release...");

        // Always call Marshal.Release to decrement the reference count.
        Marshal.Release(pointer);
    }

    static void Main(string[] args)
    {
        Run();
    }
}

.NET Framework-Sicherheit

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

Marshal-Klasse
Marshal-Member
System.Runtime.InteropServices-Namespace
GetTypeForITypeInfo
MarshalAsAttribute