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為 Unmanaged 程式代碼的 variant 數據。 Interop 封送處理器傳遞了 Managed 型別的變體 (,例如 , 或 Int32VT_I4 | VT_BYREF) VT_BSTR | VT_BYREFString,但未VT_VARIANT | VT_BYREF傳遞 。

使用 VT_VARIANT | VT_BYREF Variant 類型的其中一個優點是,在方法呼叫期間可以變更數據類型。 例如,您可以傳遞 VT_VARIANT | VT_BYREF 包含 VT_BSTR 的 Variant 類型,並取得在方法呼叫之後傳回的變數,其中包含 VT_I4 。 因為 COM Interop 封送處理器沒有辦法知道何時要傳遞和何時傳遞 VT_BSTR | VT_BYREFVT_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)

適用於