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 型のバリアント データをアンマネージ コードにマーシャリングできませんでした。 相互運用マーシャラーは、マネージド型のバリアント (たとえば、Stringの場合はVT_BSTR | VT_BYREFInt32の場合はVT_I4 | VT_BYREF) を渡しましたが、VT_VARIANT | VT_BYREFは渡されませんでした。

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

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

コンストラクター

名前 説明
VariantWrapper(Object)
古い.

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

プロパティ

名前 説明
WrappedObject
古い.

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

メソッド

名前 説明
Equals(Object)
古い.

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

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

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

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

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

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

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

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

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

(継承元 Object)

適用対象