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 지원 엔터티의 소유자 공급자 작성기에 추가 부담을 추가 하지 않고 클라이언트의 기대를 충족 하기 위해 클라이언트와 상호 작용할 때 지원 엔터티를 추가 또는 수정 된 동작을 정의 합니다. 좋습니다.
이 요구 사항의 일반적인 예 DDEX 연결 서비스와 같은 형태의 IVsDataCommand 엔터티를 지원 합니다. 하나의 목적은 IVsDataConnection, DDEX 연결 개체는 클라이언트 쪽에서 연결이 열려 있는지 확인 하 고 다른 클라이언트가 사용 중이 아닌 필요한 오버 헤드를 최소화 하면서 동시에 공급자 측에서 이러한 문제에 대 한 관심 필요가 없습니다. 따라서 주어진된 연결 서비스 연결 열기 및 여러 클라이언트 간에 공유 제대로 있는지 확인 하는 추가 논리를 수행 하는 클라이언트 개체 관련 있을 수 있습니다. 이 구현 내부 공급자 개체를 래핑하고 DDEX 런타임에서 자동으로 클라이언트에 제공 합니다.
DDEX 런타임 클라이언트 공급자의 지원 엔터티를 생성할 래퍼 개체를 반환 하려고 DDEX 지원 엔터티에 포함 된 DataClientObjectAttribute 지원 엔터티를 나타내는 형식 특성. 이 특성은이 인터페이스를 구현 하는 래퍼 클래스를 식별 합니다. 클라이언트에서 요청한 경우 DDEX 런타임 먼저 내부 공급자 개체의 인스턴스를 만들어야 하 고 래퍼 클래스의 인스턴스를 만듭니다. 이 인터페이스의 래퍼 개체를 원본으로 사용 하는 공급자 개체를 초기화 하는 방법을 제공입니다.
IVsDataClientObject<T> 인터페이스입니다 주로 관심을 플랫폼 extender 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.");
}
}