| 类型名 | ComRegistrationMethodsShouldNotBeVisible | 
| CheckId | CA1411 | 
| 类别 | Microsoft.Interoperability | 
| 是否重大更改 | 是 | 
原因
标记有 ComRegisterFunctionAttribute 或 ComUnregisterFunctionAttribute 特性的方法在外部可见。
规则说明
在向组件对象模型 (COM) 注册程序集时,会针对该程序集中的每个 COM 可见类型向注册表中添加项。标记有 ComRegisterFunctionAttribute 和 ComUnregisterFunctionAttribute 特性的方法分别会在注册和注销过程中被调用,以便运行特定于这些类型的注册/注销的用户代码。此代码不应当在这些进程外部调用。
如何解决冲突
若要修复与该规则的冲突,请将方法的可访问性更改为 private 或 internal(在 Visual Basic 中为 Friend)。
何时禁止显示警告
不要禁止显示此规则发出的警告。
示例
下面的示例演示两个与该规则冲突的方法。
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) {}
   }
}