共用方式為


SafeHandle 類型必須具有公用建構函式

在過去,當 SafeHandle 衍生的類型傳遞為 refout 參數或傳回型別時,將 SafeHandle 衍生的類型傳遞至 P/Invokes 和 COM 方法隱含需要任何可見度的無參數建構函式。 .NET 7 中來源產生的 interop 可讓此行為更容易從 DllImportAttribute 型 P/Invokes 進行移轉。 同時,我們已更新 SafeHandle 文件,告知實作者在其衍生類型中提供 public 無參數建構函式。 這項中斷性變更會針對來源產生的封送處理提出建議。

先前的行為

SafeHandle 衍生的類型在以下情況使用時必須具有任何可見度的無參數建構函式:

新的行為

SafeHandle 衍生的類型在以下情況使用時必須具有 public 的無參數建構函式:

如果類型沒有 public 無參數建構函式,interop 來源產生器就會發出編譯錯誤。

導入的版本

.NET 8 Preview 5

中斷性變更的類型

此變更可能會影響來源相容性

變更原因

Interop 來源產生器正在變更,以將更多程式碼從來源產生器本身推送至核心 .NET 程式庫。 在這項變更中,interop 小組開始強制執行建議的指導方針,以取得更容易維護且可理解的 interop 程式碼。

SafeHandle 衍生的類型上現有的非 public 無參數建構函式變更為 public

受影響的 API