次の方法で共有


VariantWrapper クラス

定義

注意事項

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

VT_VARIANT | VT_BYREF 型のデータをマネージド コードからアンマネージド コードにマーシャリングします。 このクラスは継承できません。

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使用して、相互運用マーシャラーが としてVT_VARIANT | VT_BYREF渡す をObjectラップする方法を示します。

// 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 目的は、マネージド型を対応する VARIANT 型にマーシャリングするときに、1 レベルの間接参照を追加することです。

このクラスを使用して、相互運用マーシャラーが としてVT_VARIANT | VT_BYREF渡す をラップObjectできます。 .NET Framework のバージョン 1.0 と 1.1 では、型 VT_VARIANT | VT_BYREF のバリアント データをアンマネージド コードにマーシャリングできませんでした。 相互運用マーシャラーは、マネージド型のバリアントを渡しました (たとえば、 VT_BSTR | VT_BYREFStringの場合は 、、 VT_I4 | VT_BYREFInt32の場合は VT_VARIANT | VT_BYREF)。

バリアント型を使用 VT_VARIANT | VT_BYREF する利点の 1 つは、メソッド呼び出し中にデータの型を変更できることです。 たとえば、 を含むVT_BSTRバリアント型をVT_VARIANT | VT_BYREF渡し、メソッド呼び出しの後に を含むVT_I4バリアントを返すことができます。 COM 相互運用マーシャラーには、 を渡すタイミングと を渡VT_BSTR | VT_BYREFVT_VARIANT | VT_BYREFすタイミングを知る方法がないため、これは としてVARIANT *宣言されたパラメーターの を含むBSTRバリアントを指します。 を使用VariantWrapperしてマーシャラーに指示できます。

事前バインディングはサポートされていないことに注意してください。を使用 VariantWrapper できるのは、 を呼び出す InvokeMember 場合、または ディスパッチ専用インターフェイスを事前にバインドした方法で呼び出した場合のみです。 C# では、 キーワードをref使用して、 型VariantWrapperの任意のパラメーターのセマンティクスを指定ByRefする必要もあります。 Visual Basic では、 ByRef 暗黙的な遅延バインディング呼び出しごとにセマンティクスが自動的に追加されます。 また、オブジェクトとオブジェクトの配列のVariantWrapper入れ子VariantWrapperはサポートされていないことに注意してください。

コンストラクター

VariantWrapper(Object)
古い.

指定した VariantWrapper パラメーターの Object クラスの新しいインスタンスを初期化します。

プロパティ

WrappedObject
古い.

VariantWrapper オブジェクトによってラップされたオブジェクトを取得します。

メソッド

Equals(Object)
古い.

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()
古い.

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()
古い.

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()
古い.

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()
古い.

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象