FeatureConnector<TFeatureProviderType> (Clase)

Actualización: noviembre 2007

Proporciona una implementación base para toda la extensibilidad basada en el conector de características.

Espacio de nombres:  Microsoft.Windows.Design.Features
Ensamblado:  Microsoft.Windows.Design.Extensibility (en Microsoft.Windows.Design.Extensibility.dll)

Sintaxis

Public MustInherit Class FeatureConnector(Of TFeatureProviderType As FeatureProvider) _
    Implements IDisposable

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 no admite el uso de métodos ni tipos genéricos.

Parámetros de tipo

  • TFeatureProviderType
    Tipo de proveedor de características.

Comentarios

Derive de la clase abstracta FeatureConnector<TFeatureProviderType> cuando necesite implementar el nivel más profundo de integración con WPF Designer. Los conectores de características pueden suscribirse a los servicios globales y agregar sus propios servicios.

Los proveedores de características utilizan FeatureConnectorAttribute para especificar el conector de características asociado.

La clase base FeatureConnector<TFeatureProviderType> es genérica y utiliza el tipo de proveedor de características que hospeda FeatureConnector<TFeatureProviderType>.

Los conectores de características se crean previa solicitud. Cuando la clase FeatureManager detecta FeatureConnectorAttribute en FeatureProvider, crea el FeatureConnector<TFeatureProviderType> especificado, si aún no existe.

La clase abstracta FeatureConnector<TFeatureProviderType> implementa la interfaz IDisposable, que favorece una implementación de limpieza sencilla.

La mayor parte de la funcionalidad de la clase FeatureConnector<TFeatureProviderType> se implementa en el método protegido CreateFeatureProviders. Pasar un objeto a este método hace que el conector de características busque los tipos FeatureAttribute en el objeto. Si se buscan estos atributos, la instancia de FeatureProvider asociada a cada atributo se crea y se devuelve en una lista.

Ejemplos

En el siguiente ejemplo de código se muestra cómo derivar de la clase FeatureConnector<TFeatureProviderType> para conectarse con un proveedor de características personalizado denominado DiagnosticsMenuProvider con un servicio personalizado denominado IDiagnosticsService. Para obtener una lista de código completa, vea Cómo: Crear un conector de características personalizado.

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

Jerarquía de herencia

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

Seguridad para subprocesos

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Vea también

Referencia

FeatureConnector<TFeatureProviderType> (Miembros)

Microsoft.Windows.Design.Features (Espacio de nombres)

FeatureManager

FeatureProvider

FeatureConnectorAttribute

Otros recursos

Cómo: Crear un conector de características personalizado

Proveedores de características y conectores de características

Introducción a la extensibilidad de WPF Designer