共用方式為


互通性警告

互通性警告支援與 COM 用戶端進行互動。

在本節中

規則

說明

CA1400:P/Invoke 進入點應該要存在

公用或受保護的方法是使用 System.Runtime.InteropServices.DllImportAttribute 屬性來標記。 有可能是找不到 Unmanaged 程式庫,或是方法不符合程式庫中的函式。

CA1401:P/Invokes 不應該為可見的

公用型別中公用或保護的方法具有 System.Runtime.InteropServices.DllImportAttribute 屬性 (也會由 Visual Basic 中的 Declare 關鍵字實作)。 但不得公開 (Expose) 此類方法。

CA1402:避免在 COM 可見介面中多載

當多載方法會對 COM 用戶端公開 (Expose) 時,只有第一個方法多載會保留它的名稱。 後續的多載則會透過將名稱附加至底線字元 (_) 和對應於多載宣告之順序的整數,重新命名為唯一的名稱。

CA1403:自動配置型別不應該是 COM 可見

COM 可見實值型別是使用設為 LayoutKind.Auto 的 System.Runtime.InteropServices.StructLayoutAttribute 屬性來標記。 這些型別的配置可能會在 .NET Framework 的版本之間變更,進而中斷必須有特定配置的 COM 用戶端。

CA1404:必須在 P/Invoke 之後立即呼叫 GetLastError

系統會對 Marshal.GetLastWin32Error 方法或對等 Win32 GetLastError 函式進行呼叫,而且緊接在前的呼叫並不是平台叫用方法。

CA1405:COM 可見型別的基底型別應該是 COM 可見

COM 可見型別會衍生自不是 COM 可見的型別。

CA1406:避免對 Visual Basic 6 用戶端使用 Int64 引數

Visual Basic 6 COM 用戶端無法存取 64 位元整數。

CA1407:避免在 COM 可見型別中使用靜態成員

COM 不支援靜態方法。

CA1408:不要使用 AutoDual ClassInterfaceType

使用雙重介面 (Dual Interface) 的型別可讓用戶端繫結至特定的介面配置。 在未來版本中,若型別或任何基底型別 (Base Type) 的配置有所變更,將會中斷繫結至此介面的 COM 用戶端。 根據預設,如果未指定 ClassInterfaceAttribute 屬性,則會使用分派介面。

CA1409:COM 可見型別應該是可建立的

特別標示為 COM 可見的參考型別 (Reference Type) 包含公用參數化建構函式,但不包含公用預設 (無參數) 建構函式。 COM 用戶端無法建立沒有公用預設建構函式的型別。

CA1410:應該符合 COM 註冊方法

型別會宣告使用 System.Runtime.InteropServices.ComRegisterFunctionAttribute 屬性 (Attribute) 所標記的方法,但不會宣告使用 System.Runtime.InteropServices.ComUnregisterFunctionAttribute 屬性所標記的方法 (反之亦然)。

CA1411:COM 註冊方法不應該為可見的

使用 System.Runtime.InteropServices.ComRegisterFunctionAttribute 屬性或 System.Runtime.InteropServices.ComUnregisterFunctionAttribute 屬性來標記的方法為外部可見。

CA1412:將 ComSource 介面標記為 IDispatch

型別是使用 System.Runtime.InteropServices.ComSourceInterfacesAttribute 屬性來標記,而且至少其中一個指定的介面不是使用設為 ComInterfaceType.InterfaceIsIDispatch 的 System.Runtime.InteropServices.InterfaceTypeAttribute 屬性來標記。

CA1413:避免在 COM 可見的實值型別中使用非公用欄位

COM 可見實值型別的非公用執行個體欄位對 COM 用戶端而言是可見的。 請檢閱不應該公開之資訊的欄位內容,或是會造成未預期的設計或安全性結果的欄位內容。

CA1414:以 MarshalAs 標記布林值 P/Invoke 引數

布林資料型別在 Unmanaged 程式碼中有多種表示。

CA1415:P/Invokes 必須正確宣告

此規則會尋找以 Win32 函式為目標 (具有指向 OVERLAPPED 結構參數的指標) 的平台叫用方法宣告,而且相對應的 Managed 參數不是指向 System.Threading.NativeOverlapped 結構的指標。