VariantWrapper 類別

定義

警告

VariantWrapper and support for marshalling to the VARIANT type may be unavailable in future releases.

VT_VARIANT | VT_BYREF 型別的資料從 Managed 封送處理成 Unmanaged 程式碼。 此類別無法獲得繼承。

public ref class VariantWrapper sealed
[System.Obsolete("VariantWrapper and support for marshalling to the VARIANT type may be unavailable in future releases.")]
public sealed class VariantWrapper
public sealed class VariantWrapper
[System.Serializable]
public sealed class VariantWrapper
[<System.Obsolete("VariantWrapper and support for marshalling to the VARIANT type may be unavailable in future releases.")>]
type VariantWrapper = class
type VariantWrapper = class
[<System.Serializable>]
type VariantWrapper = class
Public NotInheritable Class VariantWrapper
繼承
VariantWrapper
屬性

範例

下列程式碼範例示範如何使用 VariantWrapper 類別來包裝 Object Interop 封送處理器傳遞為 VT_VARIANT | VT_BYREF 的 。

// Create an instance of an unmanged COM object.
UnmanagedComClass UnmanagedComClassInstance = new UnmanagedComClass();

// Create a string to pass to the COM object.
string helloString = "Hello World!";

// Wrap the string with the VariantWrapper class.
object var = new System.Runtime.InteropServices.VariantWrapper(helloString);

// Pass the wrapped object.
UnmanagedComClassInstance.MethodWithStringRefParam(ref var);
' Create an instance of an unmanged COM object.
Dim UnmanagedComClassInstance As New UnmanagedComClass()

' Create a string to pass to the COM object.
Dim helloString As String = "Hello World!"

' Wrap the string with the VariantWrapper class.
Dim var As Object = New System.Runtime.InteropServices.VariantWrapper(helloString)

' Pass the wrapped object.
UnmanagedComClassInstance.MethodWithStringRefParam(var)

備註

VariantWrapper的目的是在將 Managed 型別封送處理至對應的 VARIANT 型別時,新增一層間接取值。

您可以使用這個類別來包裝 Object Interop 封送處理器傳遞為 VT_VARIANT | VT_BYREF 的 。 在 .NET Framework 1.0 和 1.1 版中,無法將類型的 VT_VARIANT | VT_BYREF variant 資料封送處理至 Unmanaged 程式碼。 Interop 封送處理器傳遞了 Managed 型別的變體 (,例如 , 或 Int32 VT_I4 | VT_BYREF) VT_BSTR | VT_BYREF String ,但未 VT_VARIANT | VT_BYREF 傳遞 。

使用 VT_VARIANT | VT_BYREF Variant 類型的其中一個優點是,在方法呼叫期間可以變更資料類型。 例如,您可以傳遞 VT_VARIANT | VT_BYREF 包含 VT_BSTR 的 Variant 類型,並取得在方法呼叫之後傳回的變數,其中包含 VT_I4 。 因為 COM Interop 封送處理器沒有辦法知道何時要傳遞和何時傳遞 VT_BSTR | VT_BYREF VT_VARIANT | VT_BYREF ,這指向包含 BSTR 宣告為 VARIANT * 之參數的 變體,您可以使用 指示封送處理器 VariantWrapper

請注意,不支援早期系結;只有在呼叫 InvokeMember 或 搭配以早期系結方式呼叫的僅限分派介面時,才能使用 VariantWrapper 。 在 C# 中 ref ,您也必須使用 關鍵字來指定 ByRef 類型 VariantWrapper 之任何參數的語意。 在Visual Basic中, ByRef 每個隱含晚期繫結呼叫都會自動新增語意。 另請注意,不支援巢狀 VariantWrapper 物件和物件的陣列 VariantWrapper

建構函式

VariantWrapper(Object)

為指定的 VariantWrapper 參數,初始化 Object 類別的新執行個體。

屬性

WrappedObject

取得 VariantWrapper 物件所包裝的物件。

方法

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

適用於