Sdílet prostřednictvím


FeatureConnector<TFeatureProviderType>-Klasse

Aktualisiert: November 2007

Stellt eine Basisimplementierung für alle Erweiterungen bereit, die auf Featureconnectoren basieren.

Namespace:  Microsoft.Windows.Design.Features
Assembly:  Microsoft.Windows.Design.Extensibility (in Microsoft.Windows.Design.Extensibility.dll)

Syntax

'Declaration
Public MustInherit Class FeatureConnector(Of TFeatureProviderType As FeatureProvider) _
    Implements IDisposable
'Usage
Dim instance As FeatureConnector(Of TFeatureProviderType)
public abstract class FeatureConnector<TFeatureProviderType> : IDisposable
where TFeatureProviderType : FeatureProvider
generic<typename TFeatureProviderType>
where TFeatureProviderType : FeatureProvider
public ref class FeatureConnector abstract : IDisposable
JScript unterstützt keine generischen Typen oder Methoden.

Typparameter

  • TFeatureProviderType
    Der Featureanbietertyp.

Hinweise

Sind von der abstrakten FeatureConnector<TFeatureProviderType>-Klasse abgeleitet, wenn mit dem WPF-Designer die tiefste Ebene der Integration implementiert werden muss. Featureconnectoren können globale Dienste abonnieren und ihre eigenen Dienste hinzufügen.

Featureanbieter verwenden FeatureConnectorAttribute, um den zugeordneten Featureconnector anzugeben.

Die FeatureConnector<TFeatureProviderType>-Basisklasse ist generisch und verwendet den Typ des Featureanbieters, den der FeatureConnector<TFeatureProviderType> hostet.

Featureconnectoren werden nach Bedarf erstellt. Wenn die FeatureManager-Klasse für einen FeatureProvider ein FeatureConnectorAttribute ermittelt, wird der angegebene FeatureConnector<TFeatureProviderType> erstellt, wenn er nicht bereits vorhanden ist.

Die abstrakte FeatureConnector<TFeatureProviderType>-Klasse implementiert die IDisposable-Schnittstelle, die eine einfache Bereinigungsimplementierung beinhaltet.

Die meisten Funktionen der FeatureConnector<TFeatureProviderType>-Klasse sind in der geschützten CreateFeatureProviders-Methode implementiert. Die Übergabe eines Objekts an diese Methode bewirkt, dass vom Featureconnector das Objekt nach FeatureAttribute-Typen durchsucht wird. Wenn solche Attribute gefunden werden, wird eine dem jeweiligen Attribut zugeordnete FeatureProvider-Instanz erstellt und in einer Liste zurückgegeben.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie von der FeatureConnector<TFeatureProviderType>-Klasse abgeleitet wird, um einen benutzerdefinierten Featureanbieter mit dem Namen DiagnosticsMenuProvider einem benutzerdefinierten Dienst mit dem Namen IDiagnosticsService zuzuordnen. Die vollständige Codeauflistung finden Sie unter Gewusst wie: Erstellen einer benutzerdefinierten Featureverbindung.

' The IDiagnosticsService specifies a simple interface for showing
' a FeatureManagerDiagnostics window.
Interface IDiagnosticsService
    Sub ShowWindow() 
End Interface


...


' The DiagnosticsFeatureConnector publishes the IDiagnosticsService. 
Class DiagnosticsFeatureConnector
    Inherits FeatureConnector(Of DiagnosticsMenuProvider)
    Implements IDiagnosticsService

    Dim fmdWindow As FeatureManagerDiagnostics

    Public Sub New(ByVal manager As FeatureManager) 
        MyBase.New(manager)

        Context.Services.Publish(Of IDiagnosticsService)(Me)

    End Sub

    ' The showWindow method creates a FeatureManagerDiagnostics
    ' window and shows it.
    Public Sub ShowWindow() Implements IDiagnosticsService.ShowWindow

        If fmdWindow IsNot Nothing Then

            ' Show the FeatureManagerDiagnostics window.
            fmdWindow.Show()

            ' Activate the 
            fmdWindow.Activate()

        Else

            fmdWindow = New FeatureManagerDiagnostics()
            fmdWindow.Initialize(Manager)
            AddHandler fmdWindow.Closed, AddressOf fmdWindow_Closed
            fmdWindow.Show()

        End If

    End Sub

    Sub fmdWindow_Closed(ByVal sender As Object, ByVal e As EventArgs)

        fmdWindow = Nothing

    End Sub

End Class
// The IDiagnosticsService specifies a simple interface for showing
// a FeatureManagerDiagnostics window.
interface IDiagnosticsService 
{
    void ShowWindow();
}


...


// The DiagnosticsFeatureConnector publishes the IDiagnosticsService. 
class DiagnosticsFeatureConnector : FeatureConnector<DiagnosticsMenuProvider>,
    IDiagnosticsService 
{
    FeatureManagerDiagnostics fmdWindow;

    public DiagnosticsFeatureConnector(FeatureManager manager)
        : base(manager) 
    {
        Context.Services.Publish<IDiagnosticsService>(this);
    }

    #region IDiagnosticsService Members

    // The showWindow method creates a FeatureManagerDiagnostics
    // window and shows it.
    public void ShowWindow() 
    {
        if (fmdWindow != null) 
        {
            fmdWindow.Show();
            fmdWindow.Activate();
        }
        else 
        {
            fmdWindow = new FeatureManagerDiagnostics();
            fmdWindow.Initialize(Manager);
            fmdWindow.Closed += new EventHandler(fmdWindow_Closed); 
            fmdWindow.Show();
        }
    }

    void fmdWindow_Closed(object sender, EventArgs e)
    {
        fmdWindow = null; 
    }

    #endregion
}

Vererbungshierarchie

System.Object
  Microsoft.Windows.Design.Features.FeatureConnector<TFeatureProviderType>
    Microsoft.Windows.Design.Features.PolicyDrivenFeatureConnector<TFeatureProviderType>

Threadsicherheit

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Siehe auch

Referenz

FeatureConnector<TFeatureProviderType>-Member

Microsoft.Windows.Design.Features-Namespace

FeatureManager

FeatureProvider

FeatureConnectorAttribute

Weitere Ressourcen

Gewusst wie: Erstellen einer benutzerdefinierten Featureverbindung

Featureanbieter und Featureverbindungen

WPF-Designer-Erweiterbarkeit