DataClientObjectAttribute - класс
Указывает, что экземпляры сущности поддержки DDEX не должны непосредственно быть возвращены клиенту. Вместо этого они должны возвращаться до объект программы-оболочки клиента, который взаимодействует с основным объектом поставщика.
Иерархия наследования
Object
Attribute
Microsoft.VisualStudio.Data.Core.DataClientObjectAttribute
Пространство имен: Microsoft.VisualStudio.Data.Core
Сборка: Microsoft.VisualStudio.Data.Core (в Microsoft.VisualStudio.Data.Core.dll)
Синтаксис
'Декларация
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Interface)> _
Public NotInheritable Class DataClientObjectAttribute _
Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Interface)]
public sealed class DataClientObjectAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Class|AttributeTargets::Interface)]
public ref class DataClientObjectAttribute sealed : public Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Interface)>]
type DataClientObjectAttribute =
class
inherit Attribute
end
public final class DataClientObjectAttribute extends Attribute
Тип DataClientObjectAttribute предоставляет следующие члены.
Конструкторы
Имя | Описание | |
---|---|---|
![]() |
DataClientObjectAttribute | Инициализирует новый экземпляр класса DataClientObjectAttribute, указав идентификатор класса |
В начало страницы
Свойства
Имя | Описание | |
---|---|---|
![]() |
ClassId | Получает идентификатор класса, указывающее тип класса объектов клиента. |
![]() |
TypeId | При реализации в производном классе возвращает уникальный идентификатор для этого Attribute. (Унаследовано от Attribute.) |
В начало страницы
Методы
Имя | Описание | |
---|---|---|
![]() |
Equals | Инфраструктура. Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту. (Унаследовано от Attribute.) |
![]() |
GetHashCode | Возвращает хэш-код для данного экземпляра. (Унаследовано от Attribute.) |
![]() |
GetType | Возвращает объект Type для текущего экземпляра. (Унаследовано от Object.) |
![]() |
IsDefaultAttribute | При переопределении в производном классе показывает, является ли значение данного экземпляра значением по умолчанию для производного класса. (Унаследовано от Attribute.) |
![]() |
Match | При переопределении в производном классе возвращает значение, указывающее, является ли этот экземпляр равным заданному объекту. (Унаследовано от Attribute.) |
![]() |
ToString | Возвращает строку, представляющую текущий объект. (Унаследовано от Object.) |
В начало страницы
Явные реализации интерфейса
Имя | Описание | |
---|---|---|
![]() ![]() |
System#Runtime#InteropServices#_Attribute#GetIDsOfNames | Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации. (Унаследовано от Attribute.) |
![]() ![]() |
System#Runtime#InteropServices#_Attribute#GetTypeInfo | Возвращает сведения о типе объекта, которые могут использоваться для получения сведений о типе интерфейса. (Унаследовано от Attribute.) |
![]() ![]() |
System#Runtime#InteropServices#_Attribute#GetTypeInfoCount | Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1). (Унаследовано от Attribute.) |
![]() ![]() |
System#Runtime#InteropServices#_Attribute#Invoke | Предоставляет доступ к открытым свойствам и методам объекта. (Унаследовано от Attribute.) |
В начало страницы
Заметки
Когда клиент вызывает среду выполнения DDEX DDEX, чтобы создать экземпляр сущности для конкретного поставщика поддержки DDEX объект поставщика обычно создание и возвращается непосредственно клиенту. В этом случае клиент имеет непосредственно дескриптор для реализации поставщика. В некоторых случаях владелец определения сущности поддержки DDEX может потребоваться указать дополнительные или измененную расширение функциональности для сущности поддержки, когда он взаимодействует с клиентом. Это может помочь соответствовать ожиданиям клиента без добавления дополнительных действий для писателя поставщика.
Самым распространенным примером этого требования поступает в форме службы подключения DDEX, как сущность поддержки IVsDataCommand. Одна функция IVsDataConnection, объект соединения DDEX, свернуть издержки выполнение на стороне клиента обеспечила, что соединение в настоящий момент открыт и не используется другим клиентом, но одновременно исключить вопросы относительно следующих проблемах в поставщике встает на сторону. Поэтому служба заданного соединения может иметь клиентского объекта, связанного с ним, что выполняет дополнительную логику, предоставляя соединение открыто и правильно совместно использовано среди множества клиентов. Эта реализация создает программу-оболочку основной объект поставщика и автоматически предоставляется клиенту средой выполнения DDEX.
Сущности поддержки DDEX, для которых требуется иметь получение программы-оболочки DDEX объект среды выполнения клиента для поддержки поставщика при создании сущности должны включать данный атрибут типа, представляющего сущность поддержки. Атрибут должен содержать значение для свойства ClassId и значение должно быть допустимым GUID, представляющий идентификатор класса помощью среды Visual Studio. Наконец, класс, определенный идентификатор класса должен быть управляемым классом, реализующим интерфейс IVsDataClientObject<T>. При запросе клиентом, среда выполнения DDEX вначале создается экземпляр базового объекта поставщика. Затем он создает экземпляр класса, который имеет указанный идентификатор класса Затем он инициализирует объект клиента, вызвав метод Initialize с основным объектом поставщика. Объект клиента затем передается обратно клиенту.
Атрибут DataClientObjectAttribute в основном полезно к расширителям платформы DDEX, т е разделах создать дополнительные сущности технических служб DDEX.
Примеры
В следующем коде показано определение вымышленной сущности поддержки, которая объявляет атрибут клиентского объекта. Определение следуют реализации данного объекта клиента, который добавляет простое ведение журнала вызовов сущности поддержки.
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using Microsoft.VisualStudio.Data.Core;
namespace DataClientObjectAttrib
{
[DataClientObject("1520C77F-09AF-40b4-B1FE-53C30A177C59")]
public interface IVsDataSupportEntity
{
void DoSomething();
}
[Guid("1520C77F-09AF-40b4-B1FE-53C30A177C59")]
internal class ClientSupportEntity : IVsDataSupportEntity,
IVsDataClientObject<IVsDataSupportEntity>
{
private IVsDataSupportEntity _providerObj;
public void Initialize(IVsDataSupportEntity providerObj)
{
if (providerObj == null)
{
throw new ArgumentNullException("providerObj");
}
_providerObj = providerObj;
}
public void DoSomething()
{
Trace.WriteLine("DoSomething started.");
_providerObj.DoSomething();
Trace.WriteLine("DoSomething finished.");
}
}
}
Потокобезопасность
Любые открытые члены этого типа, объявленные как static (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.