共用方式為


應該符合 COM 註冊方法

更新:2007 年 11 月

型別名稱

ComRegistrationMethodsShouldBeMatched

CheckId

CA1410

分類

Microsoft.Interoperability

中斷變更

非中斷

原因

型別會宣告利用 System.Runtime.InteropServices.ComRegisterFunctionAttribute 屬性 (Attribute) 所標記的方法,但不會宣告利用 System.Runtime.InteropServices.ComUnregisterFunctionAttribute 屬性所標記的方法 (反之亦然)。

規則描述

若為要建立 .NET Framework 型別的 COM 用戶端,則必須先註冊型別。如果它可以使用,則會在註冊處理序 (Process) 期間呼叫利用 ComRegisterFunctionAttribute 屬性所標記的方法,以執行使用者指定的程式碼。在移除註冊處理序期間,呼叫利用 ComUnregisterFunctionAttribute 屬性所標記的對應方法,取消註冊方法的作業。

如何修正違規

若要修正這個規則的違規情形,請加入對應的註冊或移除註冊方法。

隱藏警告的時機

請勿隱藏此規則的警告。

範例

下列範例顯示違反規則的型別。註解的程式碼會顯示違規的修正。

Imports System
Imports System.Runtime.InteropServices

<Assembly: ComVisibleAttribute(True)>
Namespace InteroperabilityLibrary

   Public Class ClassToRegister
   End Class

   Public Class ComRegistration

      <ComRegisterFunctionAttribute> _ 
      Friend Shared Sub RegisterFunction(typeToRegister As Type)
      End Sub

'      <ComUnregisterFunctionAttribute> _ 
'      Friend 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]
      internal static void RegisterFunction(Type typeToRegister) {}

//      [ComUnregisterFunction]
//      internal static void UnregisterFunction(Type typeToRegister) {}
   }
}

相關規則

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

請參閱

概念

向 COM 註冊組件

參考

組件登錄工具 (Regasm.exe)

System.Runtime.InteropServices.RegistrationServices