Com registration methods should not be visible
TypeName |
ComRegistrationMethodsShouldNotBeVisible |
CheckId |
CA1411 |
Category |
Microsoft.Interoperability |
Breaking Change |
Breaking |
Cause
A method marked with the System.Runtime.InteropServices.ComRegisterFunctionAttribute or the System.Runtime.InteropServices.ComUnregisterFunctionAttribute attribute is externally visible.
Rule Description
When an assembly is registered with COM, entries are added to the registry for each of the COM visible types in the assembly. Methods marked with the ComRegisterFunctionAttribute and ComUnregisterFunctionAttribute attributes are called during the registration and unregistration processes, respectively, to run user code that is specific to the registration/unregistration of these types. This code should not called outside these processes.
How to Fix Violations
To fix a violation of this rule change the accessibility of the method to private or internal (Friend in Visual Basic).
When to Exclude Warnings
Do not exclude a warning from this rule.
Example
The following example shows two methods that violate the rule.
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) {}
}
}
Related Rules
Com registration methods should be matched
See Also
Reference
Assembly Registration Tool (Regasm.exe)
System.Runtime.InteropServices.RegistrationServices