Share via


DataClientObjectAttribute 클래스

DDEX 지원 엔터티 인스턴스에 직접 클라이언트에 반환 되도록 없습니다 지정 합니다. 대신, 이러한 상호 작용 하는 클라이언트 래퍼 개체 내부 공급자 개체를 통해 반환 됩니다.

상속 계층 구조

Object
  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 형식에서는 다음과 같은 멤버를 노출합니다.

생성자

  이름 설명
Public 메서드 DataClientObjectAttribute 새 인스턴스를 초기화는 DataClientObjectAttribute 클래스를 클래스 ID를 지정 합니다.

위쪽

속성

  이름 설명
Public 속성 ClassId 클라이언트 개체 클래스 형식을 식별 하는 클래스 ID를 가져옵니다.
Public 속성 TypeId 파생 클래스에서 구현된 경우 이 Attribute에 대한 고유 식별자를 가져옵니다. (Attribute에서 상속됨)

위쪽

메서드

  이름 설명
Public 메서드 Equals 인프라입니다. 이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다. (Attribute에서 상속됨)
Public 메서드 GetHashCode 이 인스턴스의 해시 코드를 반환합니다. (Attribute에서 상속됨)
Public 메서드 GetType 현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Public 메서드 IsDefaultAttribute 파생 클래스에서 재정의된 경우 이 인스턴스의 값이 파생 클래스의 기본값인지 여부를 나타냅니다. (Attribute에서 상속됨)
Public 메서드 Match 파생 클래스에서 재정의된 경우 이 인스턴스가 지정된 개체와 같은지 여부를 나타내는 값을 반환합니다. (Attribute에서 상속됨)
Public 메서드 ToString 현재 개체를 나타내는 문자열을 반환합니다. (Object에서 상속됨)

위쪽

명시적 인터페이스 구현

  이름 설명
명시적 인터페이스 구현Private 메서드 System#Runtime#InteropServices#_Attribute#GetIDsOfNames 이름 집합을 해당하는 디스패치 식별자 집합에 매핑합니다. (Attribute에서 상속됨)
명시적 인터페이스 구현Private 메서드 System#Runtime#InteropServices#_Attribute#GetTypeInfo 인터페이스의 형식 정보를 가져오는 데 사용할 수 있는 개체의 형식 정보를 검색합니다. (Attribute에서 상속됨)
명시적 인터페이스 구현Private 메서드 System#Runtime#InteropServices#_Attribute#GetTypeInfoCount 개체에서 제공하는 형식 정보 인터페이스의 수를 검색합니다(0 또는 1). (Attribute에서 상속됨)
명시적 인터페이스 구현Private 메서드 System#Runtime#InteropServices#_Attribute#Invoke 개체에서 노출하는 메서드와 속성에 대한 액세스를 제공합니다. (Attribute에서 상속됨)

위쪽

설명

DDEX 런타임에서 특정 공급자에 대 한 지원 DDEX 엔터티의 인스턴스를 만들려면 DDEX 클라이언트를 호출 하면 공급자 개체 일반적으로 만들어 직접 클라이언트에 반환 합니다. 이 경우 클라이언트 공급자의 구현에 대 한 직접 핸들이 있습니다. 경우에 따라서는 DDEX 지원 엔터티의 정의의 소유자 클라이언트와 상호 작용할 때 지원 엔터티에 대 한 추가 또는 수정 된 동작을 정의 합니다. 좋습니다. 이 공급자 작성자에 대 한 추가 작업을 수행 하지 않고 클라이언트의 기대를 충족 하는 데 도움이 됩니다.

이 요구 사항의 일반적인 예 같은 DDEX 연결 서비스 형태로 제공 되는 IVsDataCommand 엔터티를 지원 합니다. 하나의 함수에 IVsDataConnection, DDEX 연결 개체는 클라이언트 쪽에서 연결이 현재 열기 및 다른 클라이언트에서를 사용 하 고 있는지 확인 해야 하는 오버 헤드를 최소화 하면서 동시에 공급자 측에서 이러한 문제에 대 한 문제를 제거 합니다. 따라서 주어진된 연결 서비스 연결 열기 및 여러 클라이언트 간에 공유 제대로 있는지 확인 하는 추가 논리를 수행 하는 클라이언트 개체 관련 있을 수 있습니다. 이 구현 내부 공급자 개체를 래핑하고 DDEX 런타임에서 자동으로 클라이언트에 제공 합니다.

클라이언트 래퍼 개체 공급자의 지원 엔터티 작성 시 지원 엔터티를 나타내는 형식에이 특성을 포함 해야 DDEX 런타임 할 의도 DDEX 지원 엔터티를 반환 합니다. 특성 값을 포함 합니다의 ClassId 속성 및 값에 유효한 Visual Studio 환경에서 등록 하는 클래스 ID를 나타내는 GUID가 있어야 합니다. 마지막으로 구현 하는 관리 되는 클래스는 클래스의 클래스 ID에 의해 식별 있어야는 IVsDataClientObject<T> 인터페이스. 클라이언트에서 요청한 경우 DDEX 런타임 내부 공급자 개체의 인스턴스를 먼저 만듭니다. 그 다음 지정한 클래스 ID가 클래스의 인스턴스를 만듭니다. 다음으로 호출 하 여 클라이언트 개체가 초기화 되는 Initialize 메서드 내부 공급자 개체를. 클라이언트 개체는 다음 클라이언트로 전달 됩니다.

DataClientObjectAttribute 특성 DDEX 플랫폼 extender에, 즉, 이러한 서비스 및 지원을 추가 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 네임스페이스