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.
Action recommandée
Si vous souhaitez conserver le comportement précédent, appelez ComWrappers.TryGetObject(IntPtr, Object) avant d’appeler GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags).