更新: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;
   }
}