次の方法で共有


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 クラス ID を指定する DataClientObjectAttribute クラスの新しいインスタンスを初期化します。

このページのトップへ

プロパティ

  名前 説明
パブリック プロパティ ClassId クライアント クラス オブジェクトの型を識別するクラス ID を取得します。
パブリック プロパティ 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 のサポートのエンティティの定義の所有者はクライアントとやり取りするサポートのエンティティの追加または変更した動作を定義する必要があります。これは、プロバイダー ライターに対して追加の作業を追加せずにクライアントの要求を満たしてに役立つことがあります。

この要件の例としては IVsDataCommand のサポートのエンティティのような DDEX の接続サービスの形式で、あります。IVsDataConnectionの 1 つが関数、DDEX の接続オブジェクトは、同時にプロバイダーのこれらの問題に関する問題を回避するために、に別のクライアントが現在開いて使用されませんが接続がであることを確認するために、クライアント側で必要なオーバーヘッドが最小限にすることです。したがって、特定の接続のサービスは追加のロジックを接続が複数のクライアント間で開き、正しく共有することを確認して実行できます。それに関連付けられているクライアント オブジェクトがある場合があります。この実装は、基になるプロバイダー オブジェクトをラップし、クライアントに DDEX のランタイムによって自動的に指定されます。

は、プロバイダーのサポートのエンティティの作成に DDEX のランタイムが返されるとクライアントのラッパー オブジェクト指定する DDEX のサポートのエンティティに、エンティティを表す型のこの属性を含める必要があります。属性は ClassId のプロパティの値を含む値は、Visual Studio の環境に登録されているクラス ID を表す有効な GUID である必要があります。最後に、クラス ID で識別されるクラスは IVsDataClientObject<T> のインターフェイスを実装するマネージ クラスである必要があります。クライアントから要求された場合、ランタイムは最初 DDEX の基になるオブジェクト プロバイダーのインスタンスを作成します。次に、指定した ID を持つクラスのインスタンスを作成します次に、基になるオブジェクトとプロバイダーの 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 (Visual Basic では Shared) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

参照

関連項目

Microsoft.VisualStudio.Data.Core 名前空間