다음을 통해 공유


IVsDataProvider.TryCreateObject<TSite> 메서드 (Guid, Type, TSite)

지정한 DDEX의 인스턴스를 만들려고 시도 지정 DDEX 데이터 소스의 지정 된 사이트 개체를 사용 하 여 배치 DDEX 공급자에 의해 구현 되는 엔터티를 지원 합니다.

네임스페이스:  Microsoft.VisualStudio.Data.Core
어셈블리:  Microsoft.VisualStudio.Data.Core(Microsoft.VisualStudio.Data.Core.dll)

구문

‘선언
Function TryCreateObject(Of TSite) ( _
    source As Guid, _
    objType As Type, _
    site As TSite _
) As Object
Object TryCreateObject<TSite>(
    Guid source,
    Type objType,
    TSite site
)
generic<typename TSite>
Object^ TryCreateObject(
    Guid source, 
    Type^ objType, 
    TSite site
)
abstract TryCreateObject : 
        source:Guid * 
        objType:Type * 
        site:'TSite -> Object
JScript에서는 제네릭 형식이나 메서드를 지원하지 않습니다.

형식 매개 변수

  • TSite
    사이트입니다.

매개 변수

  • source
    형식: Guid

    DDEX 데이터 소스 식별자 또는 Empty 특정 데이터 소스에 대 한.

  • objType
    형식: Type

    DDEX 지원 엔터티의 형식입니다.

  • site
    형식: TSite

    새 DDEX 지원 엔터티 사이트 해야 하는 개체의 인스턴스.

반환 값

형식: Object
지정 된 엔터티의 DDEX 지원. DDEX 공급자가 지원할 경우 지정 된 사이트 개체를 사용 하 여 배치 DDEX 공급자에 의해 구현 되는 인스턴스 그렇지 않으면 nullNull 참조(Visual Basic의 경우 Nothing).

예외

예외 조건
ArgumentNullException

objType 매개 변수가 nullNull 참조(Visual Basic의 경우 Nothing)입니다.

DataProviderException

지원 엔터티의 새 인스턴스를 인스턴스화할 수 여, 예외가 발생 했습니다 있는 CreateInstance DDEX 공급자 또는 리플렉션을 통해 호출 CreateObject 또는 CreateObject 메서드 구현이 나 (있는 경우) 기본 또는 클라이언트 개체 구현을 만들지 못했습니다.

설명

이 메서드는 DDEX 지원 엔터티 형식의 인스턴스를 생성 하는 다양 한 단계를 수행 합니다.

레지스트리 검사

이 지원 엔터티에 대 한 정보에 대 한 레지스트리를 검사 하 여 메서드를 시작 합니다. 지원 엔터티 형식과 일치 하는 레지스트리 키에 대 한 공급자의 SupportedObjects 키를 찾습니다. DDEX 비어 있지 않은 데이터 소스 메서드에 전달 된 경우 또한이 DDEX 데이터 원본에 대 한 하위 키를 찾습니다. 두 키가 없으면 해당 키의 기본값을 검색 합니다. 키의 값이 아닌 경우nullNull 참조(Visual Basic의 경우 Nothing) 및 지원 엔터티를 구현 하는 클래스의 형식 이름을 가정 합니다. 그런 내용은 CodeBase 값부터 한정 검색 및이 경우 nullNull 참조(Visual Basic의 경우 Nothing)는 어셈블리 값입니다. CodeBase 값에 등록 된 형식이 포함 된 어셈블리의 정규화 된 경로입니다. 어셈블리 값이 있는 고 공용 언어 런타임 (CLR)에 의해 로드 될 수 있는 어셈블리의 정규화 된 이름입니다.

지원 엔터티 기본에서 상속 하는 경우 IVsDataSupport 인터페이스를 해당 하는 용도로 xml 스트림을 반환, 수 지원 특정 엔터티의 기본 구현에 전달 될 수 있는 XML 파일의 위치를 설명 하는 추가 값을 찾습니다. 가 DataObjectSupport 표준 DDEX 프레임 워크 어셈블리에 정의 되어 있는 클래스입니다. 메서드는 디스크의 XML 파일의 정규화 된 이름이 아닐 수도 있는 XmlFile 값 먼저 찾습니다. 이 값이 있으면 XmlFile 정규화 되지 않은 값의 경로 포함할 수 있는 XmlPath 값에 찾습니다. 경로 파일 이름 분리 하 여이 XML 파일의 지역화 된 버전의 동일한 경로 위치에 배치 하는 경우 중요 합니다. XmlFile 값이 없으면 XML 어셈블리에서 포함 리소스의 이름을 식별 하는 XmlResource 값을 찾습니다. 그런 다음 해당 정보를 시작 하는 XmlCodeBase 값을 찾습니다 및이 경우 nullNull 참조(Visual Basic의 경우 Nothing)에 XmlAssembly 값. XmlCodeBase 값이 지정된 된 리소스를 포함 하는 어셈블리의 정규화 된 경로입니다. XmlAssembly 값이 있는 고 CLR에 의해 로드 될 수 있는 어셈블리의 정규화 된 이름입니다.

이 시점에서 그대로 DDEX 지원 엔터티의 인스턴스를 만들려면 레지스트리에 충분 한 정보가 없는 것을 레지스트리 검사 단계를 건너뜁니다. 이 경우 메서드는 전환의 명시적 구현에는 IVsDataSourceSpecializer 또는 IVsDataProviderObjectFactory 인터페이스 DDEX 공급자에 의해 구현 되는 경우. 메서드는 해당 어셈블리를 로드 하는 그렇지 않으면 코드 베이스 또는 전체 이름 (순서 대로)이 어셈블리에서 형식을 가져옵니다. 이 프로세스는 적절 한 형식을 찾지 못하면 한 DataProviderException 이 throw 됩니다.

마지막으로, 형식의 인스턴스가 만들어집니다. 지원 엔터티 기본에서 상속 하는 경우 IVsDataSupport 인터페이스와 XML 파일 위치에 대 한 자세한 내용은 공급자에 의해 등록 된,이 정보는 형식 생성자에 인수로 전달 됩니다. 이 정보는 XML 파일 이름 및 경로 (두 문자열) 또는 XML 리소스 이름을 전달 하며 해결 Assembly 개체 (문자열 및 Assembly 개체). 후자의 경우에는 DataProviderException 어셈블리를 로드할 수 없는 경우에 throw 됩니다. 형식 인스턴스를 만든 또는 만들어진된 형식 지원이 필요한 엔터티 형식을 구현 하지 않는 경우 다른 오류가 발생 하는 경우는 DataProviderException 이 throw 됩니다.

Specializer 소스 나 공급자 개체 팩터리

레지스트리 검사 (있는 경우) 지원 엔터티의 소스 specializer DDEX 공급자의 인스턴스를 만들 수 있는 충분 한 정보가 찾지 또는 (패키지 기반 공급자)에 대 한 개체 팩터리 CreateObject 메서드를 호출 합니다. DDEX 비어 있지 않은 데이터 소스는이 메서드에 전달 되 면 공급자의 소스 specializer (있는 경우)가 먼저 호출 됩니다. 이 메서드에서 throw 하는 경우는 NotImplementedException 없는 새 인스턴스를 반환 하거나 개도 모두 무시 하 고 있으면 공급자 개체 팩터리를 호출 NotImplementedException throw 된. 다른 모든 예외는 DataProviderException 이 throw 됩니다.

기본 인스턴스 만들기

이 지점에서 만들어진 개체가 DDEX 공급자 지원 엔터티를 구현 하지 않는 것입니다. 그러나 지원 엔터티 기본 개체 구현을 정의 기본 개체의 인스턴스가 만들어집니다.

참고

DDEX Visual Studio 2005에서 기본 개체 구현을 지원 하지 않으므로 기본 개체가 생성 됩니다.

사이팅에 대해서 개체

모든 새로 만든 DDEX 지원 엔터티 인스턴스가 위치할 수이 방법을 사용 하는 세 개의 표준 사이트 개체를 사용 하 여. 이러한 개체는 다음과 같습니다: 전역 서비스 공급자 개체의 IVsDataProvider 개체를 만든 및 IVsDataSource DDEX 비어 있지 않은 데이터 소스를 제공한 경우, 만들어진 특정 DDEX 데이터 소스를 나타내는 개체입니다. 인스턴스가 새로 생성된 된 인스턴스를 구현 하는 경우에 배치 되는 IVsDataSiteableObject<T> 제네릭 형식 사용 하 여 인터페이스 IServiceProvider, IVsDataProvider, 또는 IVsDataSource각각.

이러한 표준 사이트 개체 다음 사용자 지정 사이트 개체는 호출자에 의해 전달 된 경우 새 인스턴스는 위치할 사용자 지정 개체를 사용 하 여 구현 하는 경우는 IVsDataSiteableObject<T> 인터페이스입니다.

클라이언트 개체 만들기

DDEX 지원 엔터티 만들기의 마지막 단계는 하나를 사용 하 여 엔터티의 정의 된 경우 클라이언트 래퍼 개체를 생성 해야 합니다. 지원 엔터티 형식 인스턴스에 대 한 첫 번째 검사를 통해 이루어집니다 DataClientObjectAttribute. 이 인스턴스가 새 공급자 개체와 연결된 된 클래스 ID를 만듭니다에서 식별 되는 개체의 인스턴스는 클라이언트 개체에 전달 됩니다. 클라이언트 개체를 만든 후 기본 공급자 개체가 제공 된 표준 및 사용자 지정 사이트 개체의 동일한 세트와 배치는 있습니다.

예제

다음 코드에서는 표준 지원 엔터티 중 하나를 만들려면이 메서드를 호출 하는 방법을 보여 줍니다.

using System;
using Microsoft.VisualStudio.Data.Core;
using Microsoft.VisualStudio.Data.Services.SupportEntities;

public class DDEX_IVsDataProviderExample10
{
    public static IVsDataConnectionProperties CreateConnectionProperties(
        IVsDataProvider provider)
    {
        return provider.TryCreateObject<IVsDataConnectionProperties>();
    }
}

.NET Framework 보안

참고 항목

참조

IVsDataProvider 인터페이스

TryCreateObject 오버로드

Microsoft.VisualStudio.Data.Core 네임스페이스