共用方式為


COM 註冊方法不應該是可見的

更新:2007 年 11 月

型別名稱

ComRegistrationMethodsShouldNotBeVisible

CheckId

CA1411

分類

Microsoft.Interoperability

中斷變更

中斷

原因

System.Runtime.InteropServices.ComRegisterFunctionAttributeSystem.Runtime.InteropServices.ComUnregisterFunctionAttribute 屬性 (Attribute) 所標記的方法為外部可見的。

規則描述

以 COM 註冊組件 (Assembly) 時,項目會加入至組件中每個 COM 可見型別的登錄。在註冊和移除註冊程序中,會分別呼叫以 ComRegisterFunctionAttributeComUnregisterFunctionAttribute 屬性標記的方法,以便執行這些型別之註冊/移除註冊特定的使用者程式碼。不得在這些程序之外呼叫此程式碼。

如何修正違規

若要修正這項規則的違規情形,請將方法的存取範圍變更為 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) {}
   }
}

相關規則

應該符合 COM 註冊方法

請參閱

概念

向 COM 註冊組件

參考

組件登錄工具 (Regasm.exe)

System.Runtime.InteropServices.RegistrationServices