Partager via


CreateObjectFlags.Unwrap désenveloppe uniquement sur l’instance cible

Auparavant, si vous appeliez GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) sur une instance de ComWrappers avec l’indicateur CreateObjectFlags.Unwrap, un wrapper d’objet managé n’a pas été décompressé à partir de n’importe quelle instance de ComWrappers . Désormais, quand l’indicateur est spécifié, seuls les wrappers de l’instance ComWrappers dans laquelle GetOrCreateObjectFromComInstance a été appelé sont désenveloppés.

L’indicateur Unwrap était la seule API atteignant « plusieurs » instances ComWrappers, son comportement n’était donc pas intuitif. En outre, la nouvelle API ComWrappers.TryGetObject(IntPtr, Object) est disponible pour désenvelopper un objet COM à partir de l’instance ComWrappers de votre choix.

Comportement précédent

L’appel GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) sur une instance ComWrappers avec l’indicateur CreateObjectFlags.Unwrap désenveloppait un wrapper d’objet managé à partir de l’instance ComWrappers de votre choix.

Nouveau comportement

L’appel GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) sur une instance ComWrappers avec l’indicateur CreateObjectFlags.Unwrap désenveloppe uniquement un wrapper d’objet managé à partir de l’instance ComWrappers sur laquelle GetOrCreateObjectForComInstance est appelé. Si elle reçoit un wrapper à partir d’une autre instance ComWrappers, l’instance ComWrappers crée un nouveau wrapper.

Version introduite

.NET 8 Preview 5

Type de changement cassant

Ce changement est un changement de comportement.

Raison du changement

Le comportement précédent n’était pas intuitif. Il interrompait également l’expérience d’encapsulation dans laquelle les développeurs peuvent définir le fonctionnement de l’interopérabilité COM pour leur code à l’aide de leurs propres instances ComWrappers personnalisées.

Si vous souhaitez conserver le comportement précédent, appelez ComWrappers.TryGetObject(IntPtr, Object) avant d’appeler GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags).

API affectées