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


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), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.

См. также

Ссылки

Microsoft.VisualStudio.Data.Core - пространство имен