다음을 통해 공유


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 하는 방법을 보여 줍니다.는 interop 마샬러로 전달 하는 를 Object 래핑 하는 클래스입니다.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 관리되는 형식을 해당 VARIANT 형식으로 마샬링할 때 한 수준의 간접 참조를 추가하는 것입니다.

이 클래스를 사용하여 interop 마샬러가 로 전달하는 을 래핑 Object 할 수 있습니다.VT_VARIANT | VT_BYREF .NET Framework 버전 1.0 및 1.1에서는 형식 VT_VARIANT | VT_BYREF 의 변형 데이터를 관리되지 않는 코드로 마샬링할 수 없었습니다. interop 마샬러는 관리되는 형식의 변형(예: VT_BSTR | VT_BYREFString, 또는 VT_I4 | VT_BYREF 의 경우)을 Int32전달했지만 은 전달하지 않았습니다 VT_VARIANT | VT_BYREF.

변형 형식을 사용하는 VT_VARIANT | VT_BYREF 한 가지 이점은 메서드 호출 중에 데이터 형식을 변경할 수 있다는 것입니다. 예를 들어 를 포함하는 VT_BSTR variant 형식을 VT_VARIANT | VT_BYREF 전달하고 메서드 호출 후 를 포함하는 반환된 변형을 VT_I4 가져올 수 있습니다. COM interop 마샬러는 를 전달할 VT_BSTR | VT_BYREF 시기와 통과 VT_VARIANT | VT_BYREF시기를 알 수 없기 때문에 로 선언된 VARIANT *매개 변수에 대한 가 포함된 BSTR 변형을 가리키므로 를 사용하여 VariantWrapper마샬러에게 지시할 수 있습니다.

초기 바인딩은 지원되지 않습니다. 초기 바인딩된 방식으로 호출된 디스패치 전용 인터페이스를 사용하거나 호출 InvokeMember 할 때만 사용할 VariantWrapper 수 있습니다. C#에서는 키워드를 ref 사용하여 형식VariantWrapper의 모든 매개 변수에 대한 의미 체계를 지정 ByRef 해야 합니다. Visual Basic ByRef 에서는 암시적 지연 바인딩 호출마다 의미 체계가 자동으로 추가됩니다. 또한 개체 및 개체의 배열 중 VariantWrapperVariantWrapper 은 지원되지 않습니다.

생성자

VariantWrapper(Object)
사용되지 않음.

지정된 VariantWrapper 매개 변수에 대해 Object 클래스의 새 인스턴스를 초기화합니다.

속성

WrappedObject
사용되지 않음.

VariantWrapper 개체로 래핑된 개체를 가져옵니다.

메서드

Equals(Object)
사용되지 않음.

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
GetHashCode()
사용되지 않음.

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetType()
사용되지 않음.

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()
사용되지 않음.

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()
사용되지 않음.

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

적용 대상