CA1410: COM 登録メソッドは一致しなければなりません

TypeName

ComRegistrationMethodsShouldBeMatched

CheckId

CA1410

分類

Microsoft.Interoperability

互換性に影響する変更点

なし

原因

System.Runtime.InteropServices.ComRegisterFunctionAttribute 属性でマークされたメソッドが型で宣言されているが、System.Runtime.InteropServices.ComUnregisterFunctionAttribute 属性でマークされたメソッドが宣言されていません。または、その逆の状態になっています。

規則の説明

コンポーネント オブジェクト モデル (COM: Component Object Model) クライアントで .NET Framework 型を作成するには、最初に型を登録する必要があります。 型が使用できる場合、登録プロセスで 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) {}
   }
}

関連規則

CA1411: COM 登録メソッドは参照可能であることはできません

参照

参照

Regasm.exe (アセンブリ登録ツール)

System.Runtime.InteropServices.RegistrationServices

概念

COM へのアセンブリの登録