Com registration methods should be matched
TypeName |
ComRegistrationMethodsShouldBeMatched |
CheckId |
CA1410 |
Category |
Microsoft.Interoperability |
Breaking Change |
NonBreaking |
Cause
A type declares a method marked with the System.Runtime.InteropServices.ComRegisterFunctionAttribute attribute but does not declare a method marked with the System.Runtime.InteropServices.ComUnregisterFunctionAttribute attribute, or vice versa.
Rule Description
For COM clients to create a .NET Framework type, the type must first be registered. If it is available, a method marked with the ComRegisterFunctionAttribute attribute is called during the registration process to run user specified code. A corresponding method marked with the ComUnregisterFunctionAttribute attribute is called during the unregistration process to reverse the operations of the registration method.
How to Fix Violations
To fix a violation of this rule add the corresponding registration or unregistration method.
When to Exclude Warnings
Do not exclude a warning from this rule.
Example
The following example shows a type that violates the rule. The commented code shows the fix for the violation.
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) {}
}
}
Related Rules
Com registration methods should not be visible
See Also
Reference
Assembly Registration Tool (Regasm.exe)
System.Runtime.InteropServices.RegistrationServices