Aracılığıyla paylaş


SafeHandle türlerinin ortak oluşturucuya sahip olması gerekir

Geçmişte, türetilmiş türler P/Invoke ve COM yöntemlerine SafeHandle geçirildiğinde, bir SafeHandle veya ref parametre veya dönüş türü olarak out türetilmiş tür geçirildiğinde her görünürlükteki parametresiz bir yapıcıya örtük olarak ihtiyaç duyuluyordu. .NET 7'de kaynak tarafından oluşturulan kesişim, DllImportAttribute tabanlı P/Invoke'lerden daha kolay bir geçişi olanaklı hale getirmek için bu davranışı sağladı. Aynı zamanda SafeHandle belgelerini, uygulayıcılara türetilmiş türlerinde parametresiz bir oluşturucu sağlamalarını belirtmek için güncelledik. Önemli bu değişiklik, bu öneriyi kaynak tarafından oluşturulan marshalling için bir gereksinim haline getirir.

Önceki davranış

SafeHandleKullanıldığında herhangi bir görünürlüğün parametresiz oluşturucusunun olması için türetilmiş bir tür gerekliydi:

Yeni davranış

SafeHandle türetilmiş bir türün kullanılabilmesi için parametresiz bir public oluşturucuya sahip olması gereklidir.

Türün parametresiz bir public oluşturucusu yoksa, interop kaynak oluşturucu bir derleme hatası verir.

Sürüm kullanıma sunulmuştur

.NET 8 Önizleme 5

Kesinti yaratan değişiklik türü

Bu değişiklik kaynak uyumluluğunuetkileyebilir.

Değişiklik nedeni

Birlikte çalışma kaynak oluşturucuları, kaynak oluşturucuların kendilerinden ve çekirdek .NET kitaplıklarına daha fazla kod göndermek için değişiyor. Bu değişikliğin bir parçası olarak birlikte çalışma ekibi, daha sürdürülebilir ve anlaşılır birlikte çalışma kodu için önerilen yönergeleri uygulamaya başlıyor.

Mevcut olan, public olmayan parametresiz oluşturucuyu SafeHandle türetilmiş türde public olacak şekilde değiştirin.

Etkilenen API'ler