Прочитать на английском

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


ComVisibleAttribute Класс

Определение

Управляет доступностью отдельного управляемого типа или члена либо всех типов в сборки для модели COM.

C#
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Enum | System.AttributeTargets.Field | System.AttributeTargets.Interface | System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Struct, Inherited=false)]
public sealed class ComVisibleAttribute : Attribute
C#
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Delegate | System.AttributeTargets.Enum | System.AttributeTargets.Field | System.AttributeTargets.Interface | System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Struct, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class ComVisibleAttribute : Attribute
Наследование
ComVisibleAttribute
Атрибуты

Примеры

В следующем примере показано, как управлять видимостью класса COM, чтобы его члены были невидимыми. Задав значение ComVisibleAttributefalse on MyClass(SampleClass в примере Visual Basic), а false также в MyMethod и MyProperty, можно избежать случайного предоставления членам COM через наследование.

C#
using System.Runtime.InteropServices;

[ComVisible(false)]
class MyClass
{
   public MyClass()
   {
      //Insert code here.
   }

   [ComVisible(false)]
   public int MyMethod(string param)
   {
      return 0;
   }

   public bool MyOtherMethod()
   {
      return true;
   }

   [ComVisible(false)]
   public int MyProperty
   {
      get
      {
         return MyProperty;
      }
   }
}

Комментарии

Этот атрибут можно применять к сборкам, интерфейсам, классам, структурам, делегатам, перечислениям, полям, методам, методам доступа к событиям или свойствам.

По умолчанию используется значение true, указывающее, что управляемый тип является видимым для COM. Этот атрибут не требуется, чтобы сделать общедоступные управляемые сборки и типы видимыми; По умолчанию они видны com. Видимыми могут быть только public типы. Атрибут не может использоваться для того, чтобы сделать другим тип или internalprotected видимым для COM или сделать элементы невидимого типа видимыми.

Если задать для атрибута значение false в сборке, все public типы в ней скрываются. Вы можете выборочно сделать типы в сборке видимыми, задав для отдельных типов значение true. Если задать для атрибута значение для false определенного типа, этот тип и его члены скрываются. Однако элементы типа нельзя сделать видимыми, если тип невидим. Установка атрибуту значения false для типа предотвращает экспорт этого типа в библиотеку типов; классы не регистрируются; интерфейсы никогда не реагируют на неуправляемые QueryInterface вызовы.

Если явно не задать классу и его членам falseзначение , наследуемые классы могут предоставляться членам базового класса COM, которые невидимы в исходном классе. Например, если задать для ClassA значение false и не применять атрибут к его членам, класс и его члены будут невидимы для COM. Однако если вы наследуете КлассB от ClassA и экспортируете КлассB в COM, элементы ClassA станут видимыми элементами базового класса КлассаB.

Подробное описание процесса экспорта см. в разделе Сводка по преобразованию библиотеки сборок в тип.

Конструкторы

ComVisibleAttribute(Boolean)

Инициализирует новый экземпляр класса ComVisibleAttribute.

Свойства

TypeId

В случае реализации в производном классе возвращает уникальный идентификатор для этого атрибута Attribute.

(Унаследовано от Attribute)
Value

Возвращает значение, указывающее, видим ли данный тип для COM.

Методы

Equals(Object)

Возвращает значение, показывающее, равен ли экземпляр указанному объекту.

(Унаследовано от Attribute)
GetHashCode()

Возвращает хэш-код данного экземпляра.

(Унаследовано от Attribute)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

(Унаследовано от Attribute)
Match(Object)

При переопределении в производном классе возвращает значение, указывающее, является ли этот экземпляр равным заданному объекту.

(Унаследовано от Attribute)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

(Унаследовано от Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Возвращает сведения о типе объекта, которые можно использовать для получения сведений о типе интерфейса.

(Унаследовано от Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

(Унаследовано от Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к открытым свойствам и методам объекта.

(Унаследовано от Attribute)

Применяется к

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

См. также раздел