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
    型 : System.Guid
    特定のデータ ソースがない場合の DDEX のデータ ソース ID、つまり Empty
  • objType
    型 : System.Type
    DDEX のサポートのエンティティの型。
  • site
    型 : TSite
    新しい DDEX のサポートのエンティティが配置される必要があるオブジェクト インスタンス。

戻り値

型 : System.Object
DDEX プロバイダーでサポートされている場合は、指定されたサイトのオブジェクトに配置される DDEX プロバイダーによって実装された指定 DDEX のサポートのエンティティのインスタンス; それ以外 nullnull 参照 (Visual Basic では Nothing)。

例外

例外 条件
ArgumentNullException

objType パラメーターが nullnull 参照 (Visual Basic では Nothing) です。

[DataProviderException]

サポートのエンティティの新しいインスタンスのインスタンス化には、リフレクションや失敗する既定値またはクライアント オブジェクトの実装を DDEX プロバイダーの CreateObject または CreateObject のメソッドの実装、または作成を使用して例外を保存するかどうか CreateInstance の呼び出しを通じて (1 の場合) スローしました。

解説

このメソッドは、指定 DDEX のサポートのエンティティ型のインスタンスを作成するためにさまざまなステップを実行します。

レジストリのチェック

このサポートのエンティティについては、レジストリを調べることにより、メソッドの開始。これは、サポートのエンティティ型と一致するレジストリ キーをプロバイダーの SupportedObjects キーの下に表示されます。空でない DDEX のデータ ソースがメソッドに渡される場合は、この DDEX のデータ ソースのサブキーを検索します。どちらのキーがある場合は、キーの既定値を取得します。キーの値が非nullnull 参照 (Visual Basic では Nothing) と空でない場合、サポートのエンティティを実装するクラスの型名であると値を想定しています。これは、CodeBase の値には、その場合が nullnull 参照 (Visual Basic では Nothing)限定情報、アセンブリの値を取得します。CodeBase の値は、登録された型を含むアセンブリの完全修飾パスです。アセンブリの値は、共通言語ランタイム (CLR) までに置かれて、読み込むことができるアセンブリの完全修飾名です。

サポートのエンティティが唯一の目的が XML ストリームを返すようにします IVsDataSupport の基本インターフェイスから継承する場合は、のサポートは、特定のエンティティの基本実装に渡すことができる XML ファイルの場所を記述する可能性のある追加の値を検索します。1 個の例は標準 DDEX フレームワークのアセンブリで定義されている DataObjectSupport クラスです。メソッドは、最初に、ディスク上の XML ファイルの完全修飾名ではない場合があり、そうでない可能性がある XmlFile の値を検索します。この値がの場合、メソッドは XmlFile の不適切な値のパスを格納できる XmlPath の値を検索します。パスとファイル名の分離が同じパスの場所に XML ファイルのローカライズ バージョンを設定する場合に重要です。XmlFile の値が存在しない場合、メソッドは、アセンブリに XML を含むリソースの名前を識別する XmlResource の値を検索します。これは、XmlCodeBase の値には、その場合が nullnull 参照 (Visual Basic では Nothing)限定情報を、XmlAssembly の検索値。XmlCodeBase の値は、指定されたリソースを含むアセンブリの完全修飾パスです。XmlAssembly の値は、CLR である、読み込むことができるアセンブリの完全修飾名です。

DDEX のサポートのエンティティのインスタンスを作成するレジストリに十分な情報がないことがこの時点で判断された場合、レジストリのチェックの手順はスキップされます。この場合 DDEX プロバイダーによって実装されている場合、IVsDataSourceSpecializer または IVsDataProviderObjectFactory の明示的なインターフェイスの実装に返されるメソッドのなります。それ以外の場合、メソッドはコードベースまたはフル ネームによって適切なアセンブリをこの順序で) 読み込まれ、アセンブリから型を取得します。このプロセスは、適切な型が見つからない場合、DataProviderException がスローされます。

最後に、型のインスタンスが作成されます。サポートのエンティティが IVsDataSupport の基本インターフェイスから継承し、XML ファイルの場所についての追加情報はプロバイダーによって登録された場合、この情報は型の引数としてコンストラクターに渡されます。この情報は XML ファイルの名前とパス (2 文字列) として、または Assembly XML リソースの名前および解決するオブジェクト (文字列と Assembly のオブジェクト) として渡されます。後者の場合、DataProviderException は、アセンブリを読み込むことができない場合にスローされます。型のインスタンスが作成されるときに他のエラーが発生したり、作成された型が予測されたサポートのエンティティ型を実装する DataProviderException、がスローされます。

呼び出しのソースまたはプロバイダー オブジェクト ファクトリ Specializer

サポートのエンティティのインスタンスを作成するようにレジストリのチェックが十分な情報を見つけると DDEX プロバイダーのソースの specializer (1 の場合) またはオブジェクト ファクトリはパッケージ ベース (プロバイダー) CreateObject のメソッドが呼び出されます。空でない DDEX のデータ ソースをこのメソッドに渡すと、プロバイダーのソースの specializer (1 の場合) が最初に呼び出されます。このメソッドが NotImplementedException をスローする、または新しいインスタンスを返す、1 の場合、スローされるプロバイダーのオブジェクト ファクトリを呼び出して、または NotImplementedException を無視します。他のすべての例外の場合、DataProviderException がスローされます。

既定のインスタンスを作成します。

このポイント オブジェクトが作成されていない場合、これは DDEX プロバイダーがサポートするエンティティを実装しないことを意味します。ただし、サポートのエンティティが既定のオブジェクトの実装を定義すると、既定のオブジェクト インスタンスが作成されます。

[!メモ]

Visual Studio 2005 の DDEX は既定のオブジェクトの実装をサポートしていないため、既定のオブジェクトは作成されません。

オブジェクトで配置できます。

DDEX のすべての新しいインスタンスは、3 種類の標準的なサイトのオブジェクトとこのメソッドを配置できる使用するエンティティをサポートします。これらのオブジェクトは次のとおりです。: には、作成したグローバル サービス プロバイダー IVsDataProvider のオブジェクト、オブジェクト、および空でない DDEX のデータ ソースが提供されている場合は、用に作成されたこと DDEX の特定のデータ ソースを表す IVsDataSource のオブジェクト。インスタンスは、新しく作成されたインスタンスがジェネリック型 IServiceProvider、IVsDataProvider、または IVsDataSourceを持つ IVsDataSiteableObject<T> のインターフェイスを実装している場合にのみ、それぞれに配置されます。

これらの標準サイトのオブジェクトの後に、カスタム サイト内のオブジェクトが呼び出し元を渡すと、新しいインスタンスはカスタム オブジェクトと IVsDataSiteableObject<T> のインターフェイスを実装する場合に配置されます。

クライアント オブジェクトの作成

DDEX のサポートのエンティティの作成の最後の手順は、エンティティが 1 から定義されている場合、クライアントのラッパー オブジェクトを生成することです。これは、最初に DataClientObjectAttributeのインスタンスのサポートのエンティティ型を調べることによってされます。このインスタンスである場合は、関連クラス ID で識別されるオブジェクトのインスタンスが作成され、新しいプロバイダー オブジェクトは、このクライアント オブジェクトに渡されます。クライアント オブジェクトが作成された後、標準のセットとに配置され、基になるオブジェクト プロバイダーが指定されたことにカスタム サイトを追加します。

次のコードは、標準のサポートのエンティティの 1 種類を作成するには、このメソッドを呼び出す方法を示します。

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 名前空間