共用方式為


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

更新:2007 年 11 月

型別名稱

AvoidNonpublicFieldsInComVisibleValueTypes

CheckId

CA1413

分類

Microsoft.Interoperability

中斷變更

中斷

原因

特別標示為 COM 可見的實值型別 (Value Type) 會宣告非公用的 (Public) 執行個體 (Instance) 欄位。

規則描述

COM 可見之實值型別的非公用執行個體欄位對 COM 用戶端而言是可見的。請檢視不應該公開 (Expose) 之資訊的欄位內容,或是會造成未知的設計或安全性影響的欄位內容。

依照預設,所有公用的實值型別對 COM 而言都是可見的。但是,為了減少誤報的情形,這項規則要求必須明確陳述此型別的 COM 可視性、必須使用設定為 false 的 System.Runtime.InteropServices.ComVisibleAttribute 來標記包含的組件,而且必須使用設定為 true 的 ComVisibleAttribute 來標記此型別。

如何修正違規

若要修正此規則的違規情形並繼續隱藏欄位,請將實值型別變更為參考型別 (Reference Type),或從型別中移除 ComVisibleAttribute 屬性 (Attribute)。

隱藏警告的時機

如果公開此欄位是可接受的,則您可以放心地隱藏此規則的警告。

範例

下列範例顯示違反規則的型別。

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;
   }
}

相關規則

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

請以 ComVisibleAttribute 標記組件

請參閱

概念

限定互通的 .NET 型別

其他資源

與 Unmanaged 程式碼互通