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


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

Обновлен: Ноябрь 2007

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) {}
   }
}

Связанные правила

Методы регистрации для COM-клиента должны быть соответствующими

См. также

Основные понятия

Регистрация сборок в COM

Ссылки

Средство регистрации сборок (Regasm.exe)

System.Runtime.InteropServices.RegistrationServices