Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Tidigare, om du anropade GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) en ComWrappers instans med CreateObjectFlags.Unwrap flaggan, togs en hanterad objektomslutning bort från enComWrappers instans. Nu när flaggan har angetts skrivs endast omslutningar från den ComWrappers instans som GetOrCreateObjectFromComInstance anropades in.
Flaggan Unwrap var det enda API:et som nådde "över" ComWrappers instanser, så dess beteende var ointuitivt. Dessutom är det nya ComWrappers.TryGetObject(IntPtr, Object) API:et tillgängligt för att packa upp ett COM-objekt från valfri ComWrappers instans.
Tidigare beteende
När GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) en ComWrappers instans anropades med CreateObjectFlags.Unwrap flaggan skrevs en hanterad objektomslutning upp från valfri ComWrappers instans.
Nytt beteende
Om du anropar GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) en ComWrappers instans med CreateObjectFlags.Unwrap flaggan skrivs endast en hanterad objektomslutning upp från den ComWrappers instans som GetOrCreateObjectForComInstance anropades. Om du får en omslutning från en annan ComWrappers instans skapar instansen ComWrappers en ny omslutning.
Version introducerad
Förhandsversion 5 av .NET 8
Typ av icke-bakåtkompatibel ändring
Den här ändringen är en beteendeförändring.
Orsak till ändringen
Det tidigare beteendet var ointuitivt. Det bröt också inkapslingsupplevelsen där utvecklare kan definiera hur COM-interop fungerar för deras kod med hjälp av sina egna anpassade ComWrappers instanser.
Rekommenderad åtgärd
Om du vill behålla det tidigare beteendet anropar du ComWrappers.TryGetObject(IntPtr, Object) innan du anropar GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags).