VariantWrapper 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
警告
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 型別的變體 (,例如 , 或 Int32VT_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) |