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

Товар Значение
Идентификатор правила CA1411
Категория Microsoft.Interoperability
Критическое изменение Критическое

Причина

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

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

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

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

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

Когда лучше отключить предупреждения

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

Пример

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

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-клиента должны быть соответствующими

См. также