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
.NET