CA1413:避免在 COM 可见值类型中使用非公共字段
类型名 |
AvoidNonpublicFieldsInComVisibleValueTypes |
CheckId |
CA1413 |
类别 |
Microsoft.Interoperability |
是否重大更改 |
是 |
原因
明确标记为对组件对象模型 (COM) 可见的值类型声明非公共实例字段。
规则说明
对 COM 可见的值类型的非公共实例字段对 COM 客户端可见。 请检查各个字段的内容以查找不应当公开的信息或将对设计或安全性造成意外影响的信息。
默认情况下,所有的公共值类型都对 COM 可见。 但是,为减少误报,此规则要求显式指定类型的 COM 可见性。 包含程序集必须将 System.Runtime.InteropServices.ComVisibleAttribute 设置为 false 进行标记,并且类型必须将 ComVisibleAttribute 设置为 true 进行标记。
如何解决冲突
若要修复与该规则的冲突并使字段保持隐藏状态,请将值类型更改为引用类型,或者从类型中移除 ComVisibleAttribute 特性。
何时禁止显示警告
如果公开字段是可接受的,则可以安全地禁止显示此规则发出的警告。
示例
下面的示例演示一个与该规则冲突的类型。
Imports System
Imports System.Runtime.InteropServices
<Assembly: ComVisibleAttribute(False)>
Namespace InteroperabilityLibrary
<ComVisibleAttribute(True)> _
Public Structure SomeStructure
Friend SomeInteger As Integer
End Structure
End Namespace
using System;
using System.Runtime.InteropServices;
[assembly: ComVisible(false)]
namespace InteroperabilityLibrary
{
[ComVisible(true)]
public struct SomeStruct
{
internal int SomeValue;
}
}
相关规则
CA1017:用 ComVisibleAttribute 标记程序集