Freigeben über


IVsDataSourceSpecializer-Schnittstelle

Stellt die Möglichkeit, DDEX-Anbieterimplementierungen von Stützentitäten für bestimmte Datenquellen auf Grundlage einer Datenverbindungszeichenfolge zu spezialisieren.

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

Syntax

'Declaration
Public Interface IVsDataSourceSpecializer
public interface IVsDataSourceSpecializer
public interface class IVsDataSourceSpecializer
type IVsDataSourceSpecializer =  interface end
public interface IVsDataSourceSpecializer

Der IVsDataSourceSpecializer-Typ macht die folgenden Member verfügbar.

Methoden

  Name Beschreibung
Öffentliche Methode CreateObject Erstellt eine Instanz der angegebenen DDEX-Stützentität, die vom DDEX-Anbieter für eine Datenquelle der spezifischen DDEX implementiert wird.
Öffentliche Methode DeriveSource Berechnet eine DDEX-Datenquelle, wenn möglich, einer anbieterspezifischen Datenverbindungszeichenfolge DDEX.
Öffentliche Methode GetAssembly Löst eine anbieterspezifische Assemblyzeichenfolge zu der entsprechenden Assembly Darstellung, für eine Datenquelle der spezifischen DDEX auf.
Öffentliche Methode GetType Löst einen anbieterspezifischen Typnamen zu der entsprechenden Type Darstellung, für eine Datenquelle der spezifischen DDEX auf.

Zum Seitenanfang

Hinweise

Ein DDEX-Anbieter besteht aus einem Satz von bestimmten Implementierungen von DDEX-Stützentitäten, die von Clients verwendet werden können, um anbieterspezifisches Verhalten für eine bestimmte, bekannte Aktion aufruft. Eine Implementierung der Schnittstelle IVsDataProviderObjectFactory wird verwendet, um Instanzen dieser Stützentitäten zu erstellen. Wenn ein DDEX-Anbieter mehrere DDEX-Datenquellen unterstützt, kann der Anbieterobjekt-Factorymechanismus erweitert werden, um unterschiedliche Implementierungen der gleichen Stützentität abhängig von der Datenquelle ermöglichen, die Zielversion ist.

Diese Stützentität können diesen Typ der Erweiterung, indem sie einen Datenquellenbezeichner der spezifischen DDEX als zusätzlichen Parameter akzeptiert, wenn sie Stützentitäten erstellt. Sie können auch Ableitung einer DDEX-Datenquelle aus einer Datenverbindungszeichenfolge, die die Zieldatenquelle identifiziert, deshalb kann ein Client die beabsichtigte DDEX-Datenquelle zunächst ermitteln. Außerdem stellt sie benutzerdefinierte Typ- und Assemblyauflösung für bestimmte DDEX-Datenquellen dar, die Sie verwenden können, wenn, die für Stützentitäten, die diese Informationen als Zeichenfolgen angeben.

Ein DDEX-Anbieter implementiert diese Stützentität implizit oder explizit. Eine implizite Implementierung tritt auf, wenn der DDEX-Anbieter basierte die Registrierung ist und die integrierte Implementierung der Schnittstelle verschiedene Registrierungsschlüssel liest, die die verschiedenen Stützentitätsimplementierungen für jede Datenquelle beschreiben. Eine explizite Implementierung tritt auf, wenn der DDEX-Anbieter basierte das Paket ist oder wenn die Registrierung ist, die einer Spezifikation basiert wird von, wie die Stützentität erstellt, die zur Registrierung hinzugefügt wird. Der erste Wert agile Methoden; die letzten nur einfachen Fällen jedoch ist das agilste. Ein DDEX-Anbieter muss entscheiden, die annähern, um zu enthalten, wenn sie Datenquellenspezialisierung implementieren.

Beispiele

Der folgende Code zeigt, wie ein DDEX-Anbieter die IVsDataSourceSpecializer-Schnittstelle mit Unterstützung für mehrere Implementierungen einer Standardstützentität implementieren kann. Es wird außerdem eine beliebige Implementierung der DeriveSource-Methode an, die auf einem einfaches Verbindungszeichenfolgenformat ist. Er verwendet die Basisimplementierung der Schnittstelle, die in der DDEX-Frameworkassembly definiert ist.

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
{
}

Siehe auch

Referenz

Microsoft.VisualStudio.Data.Core-Namespace