Freigeben über


Marshal.CreateWrapperOfType-Methode

Umhüllt das angegebene COM-Objekt in einem Objekt des angegebenen Typs.

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

Syntax

'Declaration
Public Shared Function CreateWrapperOfType ( _
    o As Object, _
    t As Type _
) As Object
'Usage
Dim o As Object
Dim t As Type
Dim returnValue As Object

returnValue = Marshal.CreateWrapperOfType(o, t)
public static Object CreateWrapperOfType (
    Object o,
    Type t
)
public:
static Object^ CreateWrapperOfType (
    Object^ o, 
    Type^ t
)
public static Object CreateWrapperOfType (
    Object o, 
    Type t
)
public static function CreateWrapperOfType (
    o : Object, 
    t : Type
) : Object

Parameter

  • o
    Das mit einem Wrapper zu umhüllende Objekt.
  • t
    Der Type des zu erstellenden Wrappers.

Rückgabewert

Das neu gewrappte Objekt, das eine Instanz des gewünschten Typs darstellt.

Ausnahmen

Ausnahmetyp Bedingung

ArgumentException

t muss von __ComObject abgeleitet sein.

ArgumentNullException

Der t-Parameter ist NULL (Nothing in Visual Basic).

InvalidCastException

o kann nicht in den Zieltyp konvertiert werden, da nicht alle erforderlichen Schnittstellen unterstützt werden.

Hinweise

CreateWrapperOfType konvertiert einen COM-Klassentyp, und zwar normalerweise den generischen __ComObject-Typ, in einen anderen COM-Klassentyp. Das COM-Eingabeobjekt, dargestellt durch den o-Parameter, ist ein zur Laufzeit aufrufbarer Wrapper. Wenn Sie mit diesem Wrapper nicht vertraut sind, finden Sie weitere Informationen unter Runtime Callable Wrapper (RCW).

Sowohl der t-Parameter als auch der o-Parameter müssen Klassen darstellen, deren Signaturen mit System.Runtime.InteropServices.ComImportAttribute attributiert sind. Das Type Library Importer-Tool (Tlbimp.exe) wendet dieses Attribut beim Importieren einer Typbibliothek automatisch an. Wenn Sie den zur Laufzeit aufrufbaren Wrapper manuell im Quellcode erstellen, müssen Sie dieses Attribut auf die verwaltete Signatur anwenden, die die ursprüngliche Co-Klasse darstellt, um ihren Ursprung in COM kenntlich zu machen.

Tlbimp.exe importiert eine COM-Co-Klasse in Form einer verwalteten Klasse und einer Schnittstelle. Die Co-Klassenschnittstelle weist denselben Namen wie die ursprüngliche Co-Klasse auf, und die verwaltete Klasse trägt den Namen der ursprünglichen Co-Klasse, an den der Ausdruck Class angehängt ist. Beispielsweise wird die Co-Klasse MyCoclass zur Co-Klassenschnittstelle MyCoclass und zur verwalteten Klasse MyCoclassClass. Da t eine Klasse und keine Schnittstelle sein muss, müssen Sie die verwaltete Klasse (MyCoclassClass) und nicht die Co-Klassenschnittstelle angeben.

Hinweis

Die Identität des COM-Eingabeobjekts geht verloren, da eine neue Instanz des zur Laufzeit aufrufbaren Wrappers den IUnknown-Zeiger umfasst, der durch den ursprünglichen zur Laufzeit aufrufbaren Wrapper verfügbar gemacht wird.

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".

.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
ComImportAttribute-Klasse