다음을 통해 공유


CreateObjectFlags.Unwrap은 대상 인스턴스에서만 래핑 해제됩니다.

이전에는 CreateObjectFlags.Unwrap 플래그를 사용하여 ComWrappers 인스턴스에서 GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags)를 호출하면 관리 개체 래퍼가 모든 ComWrappers 인스턴스에서 래핑 해제되었습니다. 이제 플래그가 지정되면 GetOrCreateObjectFromComInstance가 호출된 ComWrappers 인스턴스의 래퍼만 래핑 해제됩니다.

Unwrap 플래그는 ComWrappers 인스턴스 "전체"에 도달하는 유일한 API이므로 해당 동작이 직관적이지 않았습니다. 또한 새로운 ComWrappers.TryGetObject(IntPtr, Object) API를 사용하여 ComWrappers 인스턴스에서 COM 개체를 래핑 해제할 수 있습니다.

이전 동작

CreateObjectFlags.Unwrap 플래그를 사용하여 ComWrappers 인스턴스에서 GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags)를 호출하면 모든 ComWrappers 인스턴스에서 관리 개체 래퍼가 래핑 해제되었습니다.

새 동작

CreateObjectFlags.Unwrap 플래그를 사용하여 ComWrappers 인스턴스에서 GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags)를 호출하면 GetOrCreateObjectForComInstance가 호출된 ComWrappers 인스턴스에서 관리 개체 래퍼만 래핑 해제됩니다. 다른 ComWrappers 인스턴스의 래퍼가 제공되면 ComWrappers 인스턴스는 새 래퍼를 만듭니다.

도입된 버전

.NET 8 미리 보기 5

호환성이 손상되는 변경의 형식

이 변경 사항은 동작 변경입니다.

변경 이유

이전 동작은 직관적이지 않았습니다. 또한 개발자가 자신의 사용자 지정 ComWrappers 인스턴스를 사용하여 코드에 대해 COM interop이 작동하는 방식을 정의할 수 있는 캡슐화 환경이 중단되었습니다.

이전 동작을 유지하려면 GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags)를 호출하기 전에 ComWrappers.TryGetObject(IntPtr, Object)를 호출합니다.

영향을 받는 API