互操作性警告

互操作性警告支持与 COM 客户端交互。

本节内容

规则

说明

CA1400:P/Invoke 入口点应该存在

公共或受保护方法标有 System.Runtime.InteropServices.DllImportAttribute 特性。 未能找到非托管库,或者未能将方法与库中的函数匹配。

CA1401:P/Invokes 应该是不可见的

公共类型中的公共或受保护方法具有 System.Runtime.InteropServices.DllImportAttribute 特性(还在 Visual Basic 中由 Declare 关键字实现)。 这些方法不能公开。

CA1402:避免在 COM 可见接口中进行重载

在向 COM 客户端公开重载的方法时,只有第一个方法重载保留其名称。 对于后续重载,将为其指定唯一名称,方法是在其名称后面追加一个下划线字符 (_) 和一个与该重载的声明顺序对应的整数。

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

使用双重接口的类型使客户端可以绑定到特定的接口布局。 如果在将来的版本中对该类型或任何基类型的布局进行更改,将中断绑定到该接口的 COM 客户端。 默认情况下,如果未指定 ClassInterfaceAttribute 特性,则使用仅支持调度的接口。

CA1409:Com 可见类型应该是可创建的

专门标记为对 COM 可见的某个引用类型包含公共的参数化构造函数,但不包含公共的默认(无参数)构造函数。 没有公共默认构造函数的类型不能由 COM 客户端创建。

CA1410:应对 COM 注册方法进行匹配

某个类型声明了用 System.Runtime.InteropServices.ComRegisterFunctionAttribute 特性标记的方法,但未声明用 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 参数

Boolean 数据类型在非托管代码中有多种表示形式。

CA1415:正确声明 P/Invoke

此规则查找针对 Win32 函数的平台调用方法声明,这些函数具有指向 OVERLAPPED 结构参数的指针,而对应的托管参数不是指向 System.Threading.NativeOverlapped 结构的指针。