Partager via


IVsDataProvider.TryCreateObject<TSite>, méthode (Guid, Type, TSite)

Essaie de créer une instance de l'entité spécifiée de support de DDEX pour la source de données spécifiée de DDEX implémentée par le fournisseur de DDEX, située à l'objet spécifié de site.

Espace de noms :  Microsoft.VisualStudio.Data.Core
Assembly :  Microsoft.VisualStudio.Data.Core (dans Microsoft.VisualStudio.Data.Core.dll)

Syntaxe

'Déclaration
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 ne prend pas en charge les types ou les méthodes génériques.

Paramètres de type

  • TSite
    Site.

Paramètres

  • source
    Type : Guid

    Identificateur de source de données de DDEX, ou Empty pour aucune source de données spécifique.

  • objType
    Type : Type

    Un type d'entité de support de DDEX.

  • site
    Type : TSite

    Une instance d'un objet qui doit installer la nouvelle entité de support de DDEX.

Valeur de retour

Type : Object
Une instance d'entité spécifiée de support de DDEX implémentée par le fournisseur de DDEX, situé à l'objet spécifié de site, si le fournisseur de DDEX prend en charge ; sinon, nullune référence null (Nothing en Visual Basic).

Exceptions

Exception Condition
ArgumentNullException

Le paramètre objType est nullune référence null (Nothing en Visual Basic).

DataProviderException

L'instanciation d'une nouvelle instance de l'entité de média est levé une exception, par la façon d'un appel d'CreateInstance par réflexion ou via CreateObject du fournisseur de DDEX ou l'implémentation de méthode CreateObject, ou conception de l'implémentation par défaut ou cliente d'objet (si elle existe).

Notes

Cette méthode effectue des étapes différentes pour produire une instance du type d'entité spécifié de support de DDEX.

Insertion de Registre

Démarre de méthode en inspectant le Registre pour plus d'informations sur cette entité de média. Il cherche sous la clé de SupportedObjects du fournisseur de clé de Registre qui correspond au type d'entité de média. Si une source de données non vide de DDEX était passée dans la méthode, il recherche également une sous-clé pour cette source de données de DDEX. Si l'un ou l'autre de clé est trouvée, elle extrait la valeur par défaut de la clé. Si la valeur de la clé estnullune référence null (Nothing en Visual Basic) et non vide non, elle a la valeur est le nom de type d'une classe qui implémente l'entité de média. Il extrait ensuite des informations de qualification, depuis une valeur de code base, et, si la valeur est nullune référence null (Nothing en Visual Basic), une valeur d'assembly. Valeur du code base est le chemin qualifié complet d'un assembly qui contient le type enregistré. La valeur d'assembly est le nom qualifié complet d'un assembly pouvant être placé et chargé par le Common Langage Runtime (CLR).

Si l'entité de support hérite de l'interface de base de IVsDataSupport, dont l'objectif unique est de retourner un flux XML, la méthode recherche les valeurs supplémentaires qui peuvent décrire l'emplacement d'un fichier XML qui peut être passé à une implémentation de base de l'entité spécifique de média. Un exemple est la classe DataObjectSupport définie dans l'assembly l'infrastructure du standard DDEX. La méthode recherche d'abord une valeur de XmlFile qui peut ou ne pas être le nom qualifié complet d'un fichier XML sur le disque. Si cette valeur existe, la méthode recherche une valeur de XmlPath qui peut contenir un chemin d'accès d'une valeur non qualifiée de XmlFile. La séparation du chemin d'accès et le nom de fichier est importante lorsque vous mettez les versions localisées d'un fichier XML au même emplacement de chemin d'accès. Si aucune valeur de XmlFile n'existe, la méthode recherche une valeur de XmlResource qui identifie le nom d'une ressource contenant XML dans un assembly. Il recherche ensuite ensuite des informations de qualification, depuis une valeur de XmlCodeBase, et, si la valeur est nullune référence null (Nothing en Visual Basic), une valeur de XmlAssembly. La valeur de XmlCodeBase est le chemin qualifié complet d'un assembly contenant la ressource spécifiée. La valeur de XmlAssembly est le nom qualifié complet d'un assembly pouvant être placé et chargés par le CLR.

Si à ce stade il détermine qu'il n'y a pas assez d'informations du Registre pour créer une instance de l'entité de support de DDEX, l'étape d'inspection de Registre est ignorée. Dans ce cas, les chutes de méthode vers une implémentation explicite de l'interface IVsDataSourceSpecializer ou de IVsDataProviderObjectFactory, si elle est implémentée par le fournisseur de DDEX. Sinon, la méthode charge l'assembly approprié via CodeBase ou le nom complet (dans cet ordre) et obtient le type de l'assembly. Si ce processus ne recherche pas un type approprié, DataProviderException est levé.

Enfin, une instance du type est créée. Si l'entité de support hérite de l'interface de base de IVsDataSupport et des informations supplémentaires sur un emplacement de fichier XML ont été enregistrées par le fournisseur, ces informations sont passées comme arguments au constructeur de type. Ces informations sont passées comme nom de fichier XML et tracé (deux chaînes), ou comme nom de ressources XML et objet Assembly résolu (chaîne et un objet Assembly ). Dans le second cas, DataProviderException est levée si l'assembly ne peut pas être chargé. Si une autre erreur se produit lorsque l'instance de type est créée, ou le type créé n'implémente pas le type d'entité attendu de média, DataProviderException est levé.

Source Specializer d'appel ou fabrique d'objet fournisseur

Lorsque l'inspection de Registre ne recherche pas suffisamment d'informations pour créer une instance de l'entité de média, le specializer de la source du fournisseur de DDEX (le cas échéant) ou la méthode CreateObject de fabrique d'objet (pour un fournisseur package- basé) est appelé. Lorsqu'une source de données non vide de DDEX est passée à cette méthode, le specializer de la source du fournisseur (le cas échéant) est appelé en premier. Si cette méthode lève NotImplementedException et ne retourne aucune nouvelle instance, elle appelle la fabrique d'objet du fournisseur, si d'une, également en ignorant toute NotImplementedException levée. Pour toutes les autres exceptions, DataProviderException est levé.

Créez l'instance par défaut

Si aucun objet n'a été créé à ce stade, cela signifie que le fournisseur de DDEX n'implémente pas l'entité de média. Toutefois, si l'entité de support définit une implémentation par défaut de l'objet, une instance de l'objet par défaut sera créée.

Notes

DDEX dans Visual Studio 2005 ne prend pas en charge l'implémentation d'objet par défaut, aucun objet par défaut n'est créé.

Emplacement d'objet

Toutes les instances de création récente de DDEX prennent en charge les entités qui utilisent cette méthode peuvent figurer avec trois objets standard de site. Ces objets sont les suivantes : un objet global du fournisseur de services, l'objet IVsDataProvider qui l'a créé, et l'objet IVsDataSource qui représente la source de données de détail DDEX qu'elle a été créée pour, si une source de données non vide de DDEX a été fournie. Les instances sont situées uniquement lorsque l'instance nouvellement créé implémente l'interface IVsDataSiteableObject<T> avec les types génériques IServiceProvider, IVsDataProvider, ni IVsDataSource, respectivement.

L'exécution de ces objets standard de site, si un objet de site personnalisé est passé par l'appelant, la nouvelle instance se trouve à l'objet personnalisé lorsqu'elle implémente l'interface IVsDataSiteableObject<T>.

Création d'objet client

La dernière étape pour créer une entité de support de DDEX implique produire un objet client de wrapper si l'entité est définie avec une. Cela se fait en inspectant d'abord le type d'entité de support pour une instance d'DataClientObjectAttribute. Si cette instance existe, une instance de l'objet reconnu par l'ID de classe associé est créée et le nouvel objet fournisseur est passé à cet objet client. Une fois les objets clients créés, ils se trouvent avec le même jeu standard et d'objets de site personnalisés que l'objet fournisseur sous-jacent a été envoyé.

Exemples

Le code suivant montre comment appeler cette méthode pour créer une des entités standard de média.

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>();
    }
}

Sécurité .NET Framework

Voir aussi

Référence

IVsDataProvider Interface

TryCreateObject, surcharge

Microsoft.VisualStudio.Data.Core, espace de noms