Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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:
- Bir
refveyaoutparametresi veya LibraryImportAttribute özellikli yönteminde dönüş türü olarak. - GeneratedComInterfaceAttribute ile ilişkili arabirimdeki bir yöntemde.
Yeni davranış
SafeHandle türetilmiş bir türün kullanılabilmesi için parametresiz bir public oluşturucuya sahip olması gereklidir.
- Bir
refveyaoutparametresi veya LibraryImportAttribute özellikli yönteminde dönüş türü olarak. - GeneratedComInterfaceAttribute ile ilişkili arabirimdeki bir yöntemde.
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.
Önerilen eylem
Mevcut olan, public olmayan parametresiz oluşturucuyu SafeHandle türetilmiş türde public olacak şekilde değiştirin.