Partilhar via


Interface IVsDataSourceSpecializer

Fornece a capacidade de especializar implementações de provedor de DDEX de entidades de suporte para as fontes de dados específicas com base em uma cadeia de conexão de dados.

Namespace:  Microsoft.VisualStudio.Data.Core
Assembly:  Microsoft.VisualStudio.Data.Core (em Microsoft.VisualStudio.Data.Core.dll)

Sintaxe

'Declaração
Public Interface IVsDataSourceSpecializer
public interface IVsDataSourceSpecializer
public interface class IVsDataSourceSpecializer
type IVsDataSourceSpecializer =  interface end
public interface IVsDataSourceSpecializer

O tipo IVsDataSourceSpecializer expõe os membros a seguir.

Métodos

  Nome Descrição
Método público CreateObject Cria uma instância de entidade especificada de suporte de DDEX que é implementada pelo provedor de DDEX para uma fonte de dados específica de DDEX.
Método público DeriveSource Derivado uma fonte de dados de DDEX, quando possível, de uma cadeia de conexão específica do provedor de dados de DDEX.
Método público GetAssembly Resolve uma cadeia de caracteres específica do provedor do assembly em sua representação correspondente de Assembly , para uma fonte de dados específica de DDEX.
Método público GetType Resolve um nome específico do provedor de tipo para sua representação correspondente de Type , para uma fonte de dados específica de DDEX.

Superior

Comentários

Um provedor de DDEX consiste em um conjunto de implementações específicas de entidades de suporte de DDEX que podem ser usadas por clientes para invocar o comportamento específico de provedor para uma determinada ação, conhecido.Uma implementação da interface de IVsDataProviderObjectFactory é usada para criar instâncias de essas entidades de suporte.Quando um provedor de DDEX suporta várias fontes de dados de DDEX, o mecanismo de factory do objeto do provedor pode ser estendido para permitir diferentes implementações da mesma entidade de suporte como a fonte de dados que está sendo destino.

Este objeto de suporte permite esse tipo de extensão retornando um identificador específico da fonte de dados de DDEX como um parâmetro adicional para criar entidades de suporte.Também permite a derivação de uma fonte de dados de DDEX de uma cadeia de conexão de dados que identifica a fonte de dados de destino, assim que um cliente pode inicialmente determinar a fonte de dados pretendida de DDEX.Além de isso, representa a resolução de classificação personalizada e assembly para as fontes de dados específicas de DDEX que você pode usar quando trabalhando com entidades de suporte que especificam essas informações como cadeias de caracteres.

Um provedor de DDEX pode implementar essa entidade de suporte implicitamente ou explicitamente.Uma implementação implícita ocorre quando o provedor de DDEX Registro é baseado e uma implementação interna chaves do Registro de leitura da interface de várias que descrevem as diferentes implementações de entidade de suporte para cada fonte de dados.Uma implementação explícita ocorre quando o provedor de DDEX pacote é baseado, ou quando o Registro é baseado com uma especificação de como criar um entidade de suporte adicionada ao Registro.O primeiro é agile; o último exemplos simples de suporte somente a mas são mais ágeis.Um provedor de DDEX deve decidir qual abordagem para levar ao implementar a especialização da fonte de dados.

Exemplos

O código a seguir demonstra como um provedor de DDEX pode implementar a interface de IVsDataSourceSpecializer com suporte a várias implementações de uma entidade padrão de suporte.Também mostra uma implementação do método de DeriveSource possível que é baseado em um formato simples de cadeia de conexão.Usa a implementação de interface base que é definida para o assembly da estrutura 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
{
}

Consulte também

Referência

Namespace Microsoft.VisualStudio.Data.Core