Поделиться через


CA1411: методы регистрации для COM-клиента не должны быть видимыми

TypeName

ComRegistrationMethodsShouldNotBeVisible

CheckId

CA1411

Категория

Microsoft.Interoperability

Критическое изменение

Критическое изменение

Причина

Метод, помеченный атрибутом System.Runtime.InteropServices.ComRegisterFunctionAttribute или System.Runtime.InteropServices.ComUnregisterFunctionAttribute доступен для внешнего кода.

Описание правила

При регистрации сборки для модели COM в реестр добавляются записи для каждого типа сборки, доступного для COM.Методы, помеченные атрибутами ComRegisterFunctionAttribute и ComUnregisterFunctionAttribute, вызываются в процессе регистрации и отмены регистрации соответственно для запуска пользовательского кода, относящегося к регистрации и отмене регистрации данных типов.Этот код не должен вызываться за пределами этих процессов.

Устранение нарушений

Чтобы устранить нарушение данного правила, измените доступность данного метода на private или internal (Friend в Visual Basic).

Отключение предупреждений

Для этого правила отключать вывод предупреждений не следует.

Пример

В следующем примере показаны два метода, которые нарушают данное правило.

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