VariantWrapperとは? わかりやすく解説

VariantWrapper クラス

メモ : このクラスは、.NET Framework version 2.0 で新しく追加されたものです。

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

名前空間: System.Runtime.InteropServices
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<SerializableAttribute> _
Public NotInheritable Class
 VariantWrapper
Dim instance As VariantWrapper
[SerializableAttribute] 
public sealed class VariantWrapper
[SerializableAttribute] 
public ref class VariantWrapper sealed
/** @attribute SerializableAttribute() */ 
public final class VariantWrapper
SerializableAttribute 
public final class VariantWrapper
解説解説

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.Object
  System.Runtime.InteropServices.VariantWrapper
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
VariantWrapper メンバ
System.Runtime.InteropServices 名前空間

VariantWrapper コンストラクタ

メモ : このコンストラクタは、.NET Framework version 2.0 で新しく追加されたものです。

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

名前空間: System.Runtime.InteropServices
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

public VariantWrapper (
    Object obj
)
public:
VariantWrapper (
    Object^ obj
)
public VariantWrapper (
    Object obj
)
public function VariantWrapper (
    obj : Object
)

パラメータ

obj

マーシャリングするオブジェクト。

使用例使用例

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);
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
VariantWrapper クラス
VariantWrapper メンバ
System.Runtime.InteropServices 名前空間

VariantWrapper プロパティ


パブリック プロパティパブリック プロパティ

  名前 説明
パブリック プロパティ WrappedObject VariantWrapper オブジェクトによってラップされたオブジェクトを取得します。
参照参照

関連項目

VariantWrapper クラス
System.Runtime.InteropServices 名前空間

VariantWrapper メソッド


VariantWrapper メンバ

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

VariantWrapper データ型で公開されるメンバを以下の表に示します。


パブリック コンストラクタパブリック コンストラクタ
  名前 説明
パブリック メソッド VariantWrapper 指定した System.Object パラメータの VariantWrapper クラスの新しいインスタンスを初期化します。
パブリック プロパティパブリック プロパティ
  名前 説明
パブリック プロパティ WrappedObject VariantWrapper オブジェクトによってラップされたオブジェクトを取得します。
パブリック メソッドパブリック メソッド
参照参照

関連項目

VariantWrapper クラス
System.Runtime.InteropServices 名前空間



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「VariantWrapper」の関連用語

VariantWrapperのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



VariantWrapperのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS