共用方式為


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

型別名稱

AvoidNonpublicFieldsInComVisibleValueTypes

CheckId

CA1413

分類

Microsoft.Interoperability

中斷變更

中斷

原因

特別標示為元件物件模型 (COM) 可見的實值型別宣告了非公用執行個體欄位。

規則描述

COM 可見實值型別的非公用執行個體欄位對 COM 用戶端而言是可見的。 請檢閱不應該公開之資訊的欄位內容,或是會造成未預期的設計或安全性結果的欄位內容。

依照預設,所有公用的實值型別對 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;
   }
}

相關規則

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

CA1017:以 ComVisibleAttribute 標記組件

請參閱

概念

限定互通的 .NET 型別

其他資源

與 Unmanaged 程式碼互通