Freigeben über


CreateObjectFlags.Unwrap entpackt nur Wrapper auf Zielinstanz

Wenn Sie bisher GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) für eine ComWrappers-Instanz mit dem CreateObjectFlags.Unwrap-Flag aufgerufen haben, wurde ein Wrapper eines verwalteten Objekts aus einer beliebigenComWrappers-Instanz entpackt. Wenn das Flag nun angegeben wird, werden nur Wrapper aus der ComWrappers-Instanz entpackt, für die GetOrCreateObjectFromComInstance aufgerufen wurde.

Das Unwrap-Flag war die einzige API, die mehrere ComWrappers-Instanzen erreichen konnte, daher war ihr Verhalten nicht kontraintuitiv. Darüber hinaus ist die neue ComWrappers.TryGetObject(IntPtr, Object)-API verfügbar, um ein COM-Objekt aus einer beliebigen ComWrappers-Instanz zu entpacken.

Vorheriges Verhalten

Beim Aufruf von GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) für eine ComWrappers-Instanz mit dem CreateObjectFlags.Unwrap-Flag wird ein Wrapper für ein verwaltetes Objekt aus einer beliebigen ComWrappers-Instanz entpackt.

Neues Verhalten

Durch Aufrufen von GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) für eine ComWrappers-Instanz mit dem CreateObjectFlags.Unwrap-Flag wird lediglich ein Wrapper für verwaltete Objekte aus der ComWrappers-Instanz entpackt, für die GetOrCreateObjectForComInstance aufgerufen wurde. Wenn ein Wrapper aus einer anderen ComWrappers-Instanz zur Verfügung gestellt wird, erstellt die ComWrappers-Instanz einen neuen Wrapper.

Eingeführt in Version

.NET 8 Vorschauversion 5

Typ des Breaking Changes

Diese Änderung ist eine Verhaltensänderung.

Grund für die Änderung

Das vorherige Verhalten war kontraintuitiv. Außerdem wurde die Kapselung über Bord geworfen, bei der Entwickler durch Verwenden ihrer eigenen benutzerdefinierten ComWrappers-Instanzen bestimmen können, wie COM-Interoperabilität für ihren Code funktioniert.

Wenn Sie das vorherige Verhalten beibehalten möchten, rufen Sie ComWrappers.TryGetObject(IntPtr, Object) vor GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) auf.

Betroffene APIs