Compartir a través de


IVsDataSourceSpecializer (Interfaz)

Proporciona la capacidad de especializar implementaciones de proveedor de DDEX de entidades de soporte para los orígenes de datos concretos basándose en una cadena de conexión de datos.

Espacio de nombres:  Microsoft.VisualStudio.Data.Core
Ensamblado:  Microsoft.VisualStudio.Data.Core (en Microsoft.VisualStudio.Data.Core.dll)

Sintaxis

'Declaración
Public Interface IVsDataSourceSpecializer
public interface IVsDataSourceSpecializer
public interface class IVsDataSourceSpecializer
type IVsDataSourceSpecializer =  interface end
public interface IVsDataSourceSpecializer

El tipo IVsDataSourceSpecializer expone los siguientes miembros.

Métodos

  Nombre Descripción
Método público CreateObject Crea una instancia de la entidad especificada de soporte de DDEX implementada por el proveedor de DDEX para un origen de datos específico de DDEX.
Método público DeriveSource Deriva un origen de datos de DDEX, cuando es posible, una cadena proveedor- específica de la conexión de datos de DDEX.
Método público GetAssembly Resuelve una cadena proveedor- específica del ensamblado en su representación correspondiente de Assembly , para un origen de datos específico de DDEX.
Método público GetType Resuelve un nombre de tipo proveedor- concreto en su representación correspondiente de Type , para un origen de datos específico de DDEX.

Arriba

Comentarios

Un proveedor de DDEX consta de un conjunto de implementaciones específicas de las entidades de soporte de DDEX que pueden ser utilizadas por los clientes para invocar el comportamiento proveedor- concreto para una acción determinada, conocido. Una implementación de la interfaz de IVsDataProviderObjectFactory se usa para crear instancias de estas entidades admiten. Cuando un proveedor de DDEX admite orígenes de datos de DDEX, el mecanismo del generador del objeto de proveedor se puede extender para permitir implementaciones diferentes de la misma entidad admiten según el origen de datos que es el destino.

Esta entidad admiten habilita este tipo de extensión que acepte un identificador específico del origen de datos de DDEX como parámetro adicional al crear entidades admiten. También permite la derivación de un origen de datos de DDEX de una cadena de conexión de datos que identifica el origen de datos de destino, por lo que un cliente puede determinar inicialmente el origen de datos previsto de DDEX. Además, representa la resolución de tipos personalizados y de ensamblado para orígenes de datos específicos de DDEX que puede utilizar cuando ejecuta las entidades admiten que especifican esta información como cadenas.

Un proveedor de DDEX puede implementar esta entidad admiten implícita o explícitamente. Una implementación implícita se produce cuando el proveedor de DDEX es registro basado y una implementación integrada clave del Registro se lee de la interfaz de los diferentes que describen las distintas implementaciones admiten la entidad para cada origen de datos. Una implementación explícita se produce cuando el proveedor de DDEX es paquete basado, o cuando es registro basado en con la especificación de cómo crear entidad admiten agregada al registro. El primero es ágil; las últimas casos simples de la sólo pero son más ágiles. Un proveedor de DDEX debe decidir qué enfoque a tomar al implementar la especialización de origen de datos.

Ejemplos

El código siguiente muestra cómo un proveedor de DDEX puede implementar la interfaz de IVsDataSourceSpecializer con compatibilidad para varias implementaciones de una entidad de soporte de. También muestra una posible implementación del método de DeriveSource basado en un formato simple de la cadena de conexión. Utiliza la implementación base de la interfaz que se define en el ensamblado 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
{
}

Vea también

Referencia

Microsoft.VisualStudio.Data.Core (Espacio de nombres)