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) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。