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


DataClientObjectAttribute - класс

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

Иерархия наследования

System.Object
  System.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.)

В начало страницы

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

  Имя Описание
Явная реализация интерфейсаЗакрытый метод _Attribute.GetIDsOfNames Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации. (Унаследовано от Attribute.)
Явная реализация интерфейсаЗакрытый метод _Attribute.GetTypeInfo Возвращает сведения о типе объекта, которые могут использоваться для получения сведений о типе интерфейса. (Унаследовано от Attribute.)
Явная реализация интерфейсаЗакрытый метод _Attribute.GetTypeInfoCount Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1). (Унаследовано от Attribute.)
Явная реализация интерфейсаЗакрытый метод _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 - пространство имен