CA1411:COM 註冊方法不應該為可見的
型別名稱 |
ComRegistrationMethodsShouldNotBeVisible |
CheckId |
CA1411 |
分類 |
Microsoft.Interoperability |
中斷變更 |
中斷 |
原因
以 ComRegisterFunctionAttribute 或 ComUnregisterFunctionAttribute 屬性 (Attribute) 所標記的方法為外部可見的。
規則描述
以元件物件模型 (COM) 註冊組件時,項目會加入至組件中每個 COM 可見型別的登錄。在註冊和移除註冊程序中,會分別呼叫以 ComRegisterFunctionAttribute 和 ComUnregisterFunctionAttribute 屬性標記的方法,以便執行這些型別之註冊/移除註冊特定的使用者程式碼。不得在這些處理序之外呼叫此程式碼。
如何修正違規
若要修正這項規則的違規情形,請將方法的存取範圍變更為 private 或 internal (在 Visual Basic 中為 Friend)。
隱藏警告的時機
請勿隱藏此規則的警告。
範例
下列範例會顯示違反規則的兩個方法。
Imports System
Imports System.Runtime.InteropServices
<Assembly: ComVisibleAttribute(True)>
Namespace InteroperabilityLibrary
Public Class ClassToRegister
End Class
Public Class ComRegistration
<ComRegisterFunctionAttribute> _
Public Shared Sub RegisterFunction(typeToRegister As Type)
End Sub
<ComUnregisterFunctionAttribute> _
Public Shared Sub UnregisterFunction(typeToRegister As Type)
End Sub
End Class
End Namespace
using System;
using System.Runtime.InteropServices;
[assembly: ComVisible(true)]
namespace InteroperabilityLibrary
{
public class ClassToRegister
{
}
public class ComRegistration
{
[ComRegisterFunction]
public static void RegisterFunction(Type typeToRegister) {}
[ComUnregisterFunction]
public static void UnregisterFunction(Type typeToRegister) {}
}
}