IVsDataSourceSpecializer, interface
Fournit la capacité de spécialiser des implémentations de fournisseur de DDEX des entités de prise en charge pour les sources de données spécifiques sur une chaîne de connexion de données.
Espace de noms : Microsoft.VisualStudio.Data.Core
Assembly : Microsoft.VisualStudio.Data.Core (dans Microsoft.VisualStudio.Data.Core.dll)
Syntaxe
'Déclaration
Public Interface IVsDataSourceSpecializer
public interface IVsDataSourceSpecializer
public interface class IVsDataSourceSpecializer
type IVsDataSourceSpecializer = interface end
public interface IVsDataSourceSpecializer
Le type IVsDataSourceSpecializer expose les membres suivants.
Méthodes
Nom | Description | |
---|---|---|
CreateObject | Crée une instance de l'entité spécifiée en charge de DDEX implémentée par le fournisseur de DDEX pour une source de données du détail DDEX. | |
DeriveSource | Dérive une source de données de DDEX, si possible, d'une chaîne spécifique au fournisseur de connexion de données dans DDEX. | |
GetAssembly | Résout une chaîne spécifique au fournisseur d'assembly en sa représentation correspondante d' Assembly , pour une source de données du détail DDEX. | |
GetType | Résout un type spécifique au fournisseur nom en sa représentation correspondante d' Type , pour une source de données du détail DDEX. |
Début
Notes
Un fournisseur de DDEX se compose d'un ensemble d'implémentations spécifiques des entités de prise en charge de DDEX qui peuvent être utilisées par les clients pour appeler le comportement spécifique au fournisseur pour une action particulière et connue. Une implémentation de l'interface d' IVsDataProviderObjectFactory est utilisée pour créer des instances de ces entités de charge. Lorsqu'un fournisseur de DDEX prend en charge plusieurs sources de données de DDEX, le mécanisme de fabrique d'objet fournisseur peut être étendu pour permettre différentes implémentations de la même entité de charge selon la source de données qui est ciblée.
Cette entité de support active ce type d'extension en recevant un identificateur de source de données du détail DDEX comme paramètre supplémentaire en créant des entités de charge. Elle permet également la dérivation d'une source de données de DDEX d'une chaîne de connexion de données qui identifie la source de données cible, donc un client peut initialement déterminer la source de données destinée de DDEX. En outre, elle représente la résolution personnalisée de type et d'assembly pour les sources de données spécifiques de DDEX que vous pouvez utiliser lorsque vous travaillez avec les entités de charge qui spécifient ces informations chaîne comme.
Un fournisseur de DDEX peut implémenter cette entité en charge implicitement ou explicitement. Une implémentation implicite se produit lorsque le fournisseur de DDEX est basé Registre et une implémentation intégrée clés de Registre de lectures d'interface des différentes qui décrivent les différentes implémentations d'entité du support technique pour chaque source de données. Une implémentation explicite se produit lorsque le fournisseur de DDEX module est basé, ou lorsqu'il s'agit de Registre basée avec une spécification de la création de l'entité de support ajoutée au Registre. Le précédent est agile ; les dernières cas simples de prend uniquement en charge mais est le plus agile. Un fournisseur de DDEX doit décider s'approche à prendre en implémentant la spécialisation de source de données.
Exemples
Le code suivant montre comment un fournisseur de DDEX peut implémenter l'interface d' IVsDataSourceSpecializer avec la prise en charge de plusieurs implémentations d'une entité standard de charge. Il montre également une implémentation possible de la méthode d' DeriveSource basé sur un format simple de chaîne de connexion. Il utilise l'implémentation de base de l'interface définie dans l'assembly de l'infrastructure de DDEX.
using System;
using Microsoft.VisualStudio.Data.Core;
using Microsoft.VisualStudio.Data.Framework;
using Microsoft.VisualStudio.Data.Services.SupportEntities;
internal class MySourceSpecializer : DataSourceSpecializer
{
private static readonly Guid Source1Guid =
new Guid("A871863D-7D71-4e49-A8C5-4E959DDE7AF7");
private static readonly Guid Source2Guid =
new Guid("D79D7D55-A266-4db9-92A9-3FDBA5D6A722");
public override Guid DeriveSource(string connectionString)
{
if (connectionString.StartsWith("Source1"))
{
return Source1Guid;
}
if (connectionString.StartsWith("Source2"))
{
return Source2Guid;
}
return base.DeriveSource(connectionString);
}
public override object CreateObject(Guid source, Type objType)
{
if (objType == null)
{
throw new ArgumentNullException("objType");
}
if (objType == typeof(IVsDataConnectionProperties))
{
if (source == Source1Guid)
{
return new MySource1ConnectionProperties();
}
if (source == Source2Guid)
{
return new MySource2ConnectionProperties();
}
}
return base.CreateObject(source, objType);
}
}
internal class MySource1ConnectionProperties : DataConnectionProperties
{
}
internal class MySource2ConnectionProperties : DataConnectionProperties
{
}