IVsDataClientObject<T> インターフェイス
基になるオブジェクト プロバイダーと対話するクライアントのラッパー オブジェクトを表します。
名前空間: Microsoft.VisualStudio.Data.Core
アセンブリ: Microsoft.VisualStudio.Data.Core (Microsoft.VisualStudio.Data.Core.dll 内)
構文
'宣言
Public Interface IVsDataClientObject(Of T As Class)
public interface IVsDataClientObject<T>
where T : class
generic<typename T>
where T : ref class
public interface class IVsDataClientObject
type IVsDataClientObject<'T when 'T : not struct> = interface end
JScript では、ジェネリックな型またはメソッドは使用できません。
型パラメーター
- T
パラメーターの型。
IVsDataClientObject<T> 型で公開されるメンバーは以下のとおりです。
メソッド
名前 | 説明 | |
---|---|---|
![]() |
Initialize | 基になるオブジェクト プロバイダーの実装を持つクライアント オブジェクトを初期化します。 |
このページのトップへ
解説
特定のプロバイダーの DDEX のサポートのエンティティのインスタンスを作成するに DDEX のクライアントが DDEX のランタイムを呼び出すときにオブジェクト プロバイダーは、クライアントによって直接作成され、が返されます。 この場合、クライアントはプロバイダーの実装に直接ハンドルがあります。 場合によっては、DDEX のサポートのエンティティの所有者はプロバイダーの追加。また、ライターを追加せずにクライアントの要求を満たしてためにクライアントとやり取りするサポートのエンティティの追加または変更した動作を定義する必要があります。
この要件の例としては IVsDataCommand のサポートのエンティティのような DDEX の接続サービスの形式に使用されます。 IVsDataConnectionの 1 種類のゴール、DDEX の接続オブジェクトは、であることを接続が別のクライアントが開き、現在使用中にするために、同時に、プロバイダー側のこれらの問題について考慮する必要がなくするクライアント側で必要なオーバーヘッドを最小限に抑えることです。 したがって、特定の接続サービスは追加のロジックを接続が複数のクライアント間で開き、適切に共有されていることを確認して実行できます。それに関連付けられているクライアント オブジェクトがある場合があります。 この実装は、基になるプロバイダー オブジェクトをラップし、クライアントに DDEX のランタイムによって自動的に指定されます。
プロバイダーのサポートのエンティティの作成のクライアントのラッパー オブジェクト DDEX のランタイムの制御をサポートするエンティティを表す型の DataClientObjectAttribute の属性が含まれているする DDEX のサポートのエンティティ。 この属性は、このインターフェイスを実装するラッパー クラスを識別します。 クライアントから要求された場合、ランタイムは最初 DDEX の基になるオブジェクト プロバイダーのインスタンスを作成し、ラッパー クラスのインスタンスを作成します。 このインターフェイスの目的は、基になるオブジェクト プロバイダーをラッパー オブジェクトを初期化するためのメソッドに指定することです。
IVsDataClientObject<T> のインターフェイスは DDEX プラットフォームの拡張、追加の DDEX サービスとサポートのエンティティを作成するつまり、主に重要です。
例
次のコードはクライアント オブジェクト属性を宣言する架空のサポートのエンティティの定義を示します。 この定義はのサポートのエンティティの呼び出しの単純なログを追加するクライアント オブジェクトの実装を指定しています。
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using Microsoft.VisualStudio.Data.Core;
[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.");
}
}