Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Historicky předávání typů odvozených z SafeHandle do P/Invoke a metod COM implicitně vyžadovalo konstruktor bez parametrů a jakékoli viditelnosti, když je typ odvozený z SafeHandle předán jako parametr ref nebo out nebo jako návratový typ. Zprostředkování komunikace generované zdrojovým kódem v .NET 7 umožnilo toto chování pro snadnější migraci z P/Invokes založených na DllImportAttribute. Současně jsme aktualizovali dokumentaci SafeHandle tak, aby implementátoři poskytovali konstruktor bez parametrů ve svých odvozených typech. Tato zásadní změna činí z tohoto doporučení požadavek pro serializaci generovanou zdrojem.
Předchozí chování
Odvozený typ SafeHandle byl potřeboval mít konstruktor bez parametrů s jakoukoli viditelností při použití:
- Jako parametr
refnebooutnebo návratový typ v atributované LibraryImportAttribute metodě. - V metodě v rozhraní GeneratedComInterfaceAttribute s atributy.
Nové chování
Odvozený SafeHandlepublic typ je nutný k tomu, aby při použití měl konstruktor bez parametrů:
- Jako parametr
refnebooutnebo návratový typ v atributované LibraryImportAttribute metodě. - V metodě v rozhraní GeneratedComInterfaceAttribute s atributy.
Pokud typ nemá public konstruktor bez parametrů, generátor zdrojů interoperability vygeneruje chybu kompilace.
Verze byla představena
.NET 8 Preview 5
Typ zásadní změny
Tato změna může ovlivnit kompatibilitu zdroje.
Důvod změny
Generátory zdrojového kódu pro interoperabilitu se mění, aby přesunuly více kódu ze samotných generátorů do základních knihoven .NET. V rámci této změny začíná tým pro interoperabilitu vynucovat doporučené pokyny pro udržovatelný a srozumitelnější interoperabilní kód.
Doporučená akce
Změňte existující konstruktor bez parametrů u typu odvozeného z public, aby byl SafeHandle.