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;
}
}
相關規則
CA1017:以 ComVisibleAttribute 標記組件