次の方法で共有


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

TypeName

ComRegistrationMethodsShouldNotBeVisible

CheckId

CA1411

[カテゴリ]

Microsoft.Interoperability

互換性に影響する変更点

あり

原因

System.Runtime.InteropServices.ComRegisterFunctionAttribute 属性または System.Runtime.InteropServices.ComUnregisterFunctionAttribute 属性のマークが付けられたメソッドが、外部から参照可能になっています。

規則の説明

アセンブリをコンポーネント オブジェクト モデル (COM: Component Object Model) に登録すると、エントリはアセンブリ内の COM 参照可能なそれぞれの型に対して、レジストリに追加されます。ComRegisterFunctionAttribute 属性および ComUnregisterFunctionAttribute 属性のマークが付けられたメソッドは、それぞれ登録および登録解除の実行中に呼び出され、それぞれの型の登録/登録解除に固有のユーザー コードを実行します。このコードは、これらのプロセスの外側から呼び出すことができないようにしてください。

違反の修正方法

この規則違反を修正するには、メソッドのアクセシビリティを private または internal (Visual Basic の場合は Friend) に変更します。

警告を抑制する状況

この規則による警告は抑制しないでください。

使用例

この規則に違反する 2 つのメソッドを次の例に示します。

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 (アセンブリ登録ツール)

System.Runtime.InteropServices.RegistrationServices

概念

COM へのアセンブリの登録