VariantWrapper クラス
アセンブリ: mscorlib (mscorlib.dll 内)


VariantWrapper の目的は、マネージ型を対応する VARIANT 型にマーシャリングするときに間接操作のレベルを 1 つ追加することです。
このクラスを使用すると、相互運用マーシャラが VT_VARIANT | VT_BYREF として渡す Object をラップできます。.NET Framework Version 1.0 および 1.1 では、VT_VARIANT | VT_BYREF 型のバリアント データをアンマネージ コードにマーシャリングできませんでした。相互運用マーシャラは、マネージ型のバリアント (たとえば、String の VT_BSTR | VT_BYREF、または Int32 の VT_I4 | VT_BYREF) は渡しましたが、VT_VARIANT | VT_BYREF は渡しませんでした。
VT_VARIANT | VT_BYREF バリアント型を使用する利点の 1 つは、メソッド呼び出し時にデータの型を変更できることです。たとえば、VT_BSTR を格納する VT_VARIANT| VT_BYREF バリアント型を渡し、メソッド呼び出し後に VT_I4 を格納するバリアントを取得できます。COM 相互運用マーシャラは、VARIANT * として宣言されているパラメータの BSTR を格納するバリアントを指す VT_BSTR | VT_BYREF と VT_VARIANT | VT_BYREF を渡すタイミングを知る手段がないため、VariantWrapper を使用してマーシャラに指示できます。
事前バインディングはサポートされません。VariantWrapper を使用できるのは、InvokeMember を呼び出す場合や、事前バインディングのような方法で呼び出されたディスパッチ専用インターフェイスを使用する場合だけです。C# では、ref キーワードを使用して VariantWrapper 型の任意のパラメータに ByRef セマンティクスを指定する必要もあります。Visual Basic では、すべての暗黙の遅延バインディング呼び出しに ByRef セマンティクスが自動的に追加されます。また、VariantWrapper オブジェクトや VariantWrapper オブジェクトの配列は入れ子にできません。

VariantWrapper クラスを使用して、相互運用マーシャラが VT_VARIANT | VT_BYREF として渡す Object をラップする方法を次のコード例に示します。
' 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)
// 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);

System.Runtime.InteropServices.VariantWrapper


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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


VariantWrapper コンストラクタ
アセンブリ: mscorlib (mscorlib.dll 内)


VariantWrapper クラスを使用して、相互運用マーシャラが VT_VARIANT | VT_BYREF として渡す Object をラップする方法を次のコード例に示します。
' 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)
// 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);

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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


VariantWrapper プロパティ
VariantWrapper メソッド

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

VariantWrapper メンバ
VT_VARIANT | VT_BYREF 型のデータをマネージ コードからアンマネージ コードにマーシャリングします。このクラスは継承できません。
VariantWrapper データ型で公開されるメンバを以下の表に示します。



名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

Weblioに収録されているすべての辞書からVariantWrapperを検索する場合は、下記のリンクをクリックしてください。

- VariantWrapperのページへのリンク