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 登録メソッドは一致しなければなりません
参照
関連項目
System.Runtime.InteropServices.RegistrationServices