Aracılığıyla paylaş


CreateObjectFlags.Unwrap yalnızca hedef örnekteki unwraps

Daha önce, bayrağı olan bir örneği çağırdıysanızGetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags), yönetilen nesne sarmalayıcı herhangi ComWrappersCreateObjectFlags.Unwrapçıkarılıyordu.ComWrappers Artık bayrak belirtildiğinde, yalnızca üzerinde çağrılan örnekteki ComWrappersGetOrCreateObjectFromComInstance sarmalayıcılar eşlenmemiş olur.

Unwrap Bayrak, "örnekler arasında" ComWrappers ulaşan tek API'ydi, bu nedenle davranışı uygun değildi. Ayrıca, yeni ComWrappers.TryGetObject(IntPtr, Object) API herhangi ComWrappers bir örnekten com nesnesini açmak için kullanılabilir.

Önceki davranış

Herhangi GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) bir ComWrappers örnekten yönetilen nesne sarmalayıcısını CreateObjectFlags.Unwrap kaldıran bayrağı olan bir örnekte çağrılmasıComWrappers.

Yeni davranış

Bayrağı olan bir GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) örnekte çağrılması ComWrappersCreateObjectFlags.Unwrap, yönetilen nesne sarmalayıcısını yalnızca çağrılan örnekten ComWrappersGetOrCreateObjectForComInstance kaldırır. Farklı ComWrappers bir örnekten bir sarmalayıcı verilirse, ComWrappers örnek yeni bir sarmalayıcı oluşturur.

Sürüm kullanıma sunulmuştur

.NET 8 Önizleme 5

Hataya neden olan değişikliğin türü

Bu değişiklik davranışsal bir değişikliktir.

Değişiklik nedeni

Önceki davranış uygun değildi. Ayrıca geliştiricilerin kendi özel ComWrappers örneklerini kullanarak COM birlikte çalışmasının kodları için nasıl çalıştığını tanımlayabildiği kapsülleme deneyimini de kırdı.

Önceki davranışı korumak istiyorsanız çağrısından önce öğesini arayın ComWrappers.TryGetObject(IntPtr, Object)GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags).

Etkilenen API’ler