請避免在 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;
}
}