共用方式為


CA1411:COM 註冊方法不應該為可見的

型別名稱

ComRegistrationMethodsShouldNotBeVisible

CheckId

CA1411

分類

Microsoft.Interoperability

中斷變更

中斷

原因

ComRegisterFunctionAttributeComUnregisterFunctionAttribute 屬性 (Attribute) 所標記的方法為外部可見的。

規則描述

以元件物件模型 (COM) 註冊組件時,項目會加入至組件中每個 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) {}
   }
}

相關規則

CA1410:應該符合 COM 註冊方法

請參閱

參考

Regasm.exe (組件登錄工具)

RegistrationServices

概念

向 COM 註冊組件