CA1411: методы регистрации для COM-клиента не должны быть видимыми
TypeName |
ComRegistrationMethodsShouldNotBeVisible |
CheckId |
CA1411 |
Категория |
Microsoft.Interoperability |
Критическое изменение |
Критическое изменение |
Причина
Метод, помеченный атрибутом ComRegisterFunctionAttribute или 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 (средство регистрации сборок)