Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wcześniej, jeśli wywołano GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) wystąpienie z ComWrappers flagąCreateObjectFlags.Unwrap, otoka obiektu zarządzanego została rozpakowana z dowolnegoComWrappers wystąpienia. Teraz, gdy flaga jest określona, tylko otoki z ComWrappers wystąpienia, które GetOrCreateObjectFromComInstance zostało wywołane, są niezapisane.
Flaga Unwrap była jedynym interfejsem API, który osiągnął "między" ComWrappers wystąpieniami, więc jego zachowanie było niezamierzone. Ponadto nowy ComWrappers.TryGetObject(IntPtr, Object) interfejs API jest dostępny do odpakowania obiektu COM z dowolnego ComWrappers wystąpienia.
Poprzednie zachowanie
Wywoływanie GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) wystąpienia z ComWrappers flagą CreateObjectFlags.Unwrap unwrapped otoki obiektu zarządzanego z dowolnego ComWrappers wystąpienia.
Nowe zachowanie
Wywołanie GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) wystąpienia z ComWrappers flagą CreateObjectFlags.Unwrap powoduje tylko odpakowywanie otoki obiektów zarządzanych z wywołanego ComWrappers wystąpieniaGetOrCreateObjectForComInstance. Jeśli dana otoka z innego ComWrappers wystąpienia, ComWrappers wystąpienie tworzy nową otokę.
Wprowadzona wersja
.NET 8 (wersja zapoznawcza 5)
Typ zmiany powodującej niezgodność
Ta zmiana jest zmianą behawioralną.
Przyczyna wprowadzenia zmiany
Poprzednie zachowanie było niezamierzone. To również złamało środowisko hermetyzacji, w którym deweloperzy mogą definiować sposób współdziałania modelu COM dla kodu przy użyciu własnych wystąpień niestandardowych ComWrappers .
Zalecana akcja
Jeśli chcesz zachować poprzednie zachowanie, przed wywołaniem metody wywołaj metodę ComWrappers.TryGetObject(IntPtr, Object)GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags).