更新:2007 年 11 月
TypeName |
AvoidNonpublicFieldsInComVisibleValueTypes |
CheckId |
CA1413 |
类别 |
Microsoft.Interoperability |
是否重大更改 |
是 |
原因
明确标记为对 COM 可见的值类型声明非公共实例字段。
规则说明
对 COM 可见的值类型的非公共实例字段对 COM 客户端可见。请检查该字段的内容,确定不应当公开的信息或者将对设计或安全性造成意外影响的信息。
默认情况下,所有的公共值类型都对 COM 可见。但是,为了减少误报,此规则要求显式声明类型的 COM 可见性;包含程序集必须用设置为 false 的 System.Runtime.InteropServices.ComVisibleAttribute 进行标记,类型必须用设置为 true 的 ComVisibleAttribute 进行标记。
如何修复冲突
若要修复与该规则的冲突并使字段保持隐藏状态,请将值类型更改为引用类型,或者从类型中移除 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;
}
}