Поделиться через


FeatureConnector<TFeatureProviderType> - класс

Обновлен: Ноябрь 2007

Обеспечивает базовую реализацию возможностей расширения с помощью функциональных соединителей.

Пространство имен:  Microsoft.Windows.Design.Features
Сборка:  Microsoft.Windows.Design.Extensibility (в Microsoft.Windows.Design.Extensibility.dll)

Синтаксис

'Декларация
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 не поддерживает универсальные типы и методы.

Параметры типа

  • TFeatureProviderType
    Тип поставщика функций.

Заметки

Наследование от базового класса FeatureConnector<TFeatureProviderType> осуществляется при необходимости реализации максимальной глубокой интеграции с WPF (конструктор). Функциональные соединители могут подписываться на глобальные службы и добавлять свои собственные службы.

Для указания соответствующего функционального соединителя в поставщиках функций используется атрибут FeatureConnectorAttribute.

Базовый класс FeatureConnector<TFeatureProviderType> является универсальным и параметризуется типом поставщика функций, размещаемого в FeatureConnector<TFeatureProviderType>.

Функциональные соединители создаются по мере необходимости. Если класс FeatureManager обнаруживает атрибут FeatureConnectorAttribute у поставщика FeatureProvider, то он создает указанный им соединитель FeatureConnector<TFeatureProviderType>, если тот еще не был создан.

Абстрактный класс FeatureConnector<TFeatureProviderType> реализует интерфейс IDisposable, который предоставляет простую реализацию очистки.

Большая часть функциональности класса FeatureConnector<TFeatureProviderType> реализована в защищенном методе CreateFeatureProviders. При передаче объекта в этот метод функциональный соединитель ищет в нем атрибуты FeatureAttribute. Если такие атрибуты найдены, для каждого из них создается связанный с ним экземпляр FeatureProvider; метод возвращает список созданных таким образом поставщиков.

Примеры

В следующем примере показано, как наследовать от класса FeatureConnector<TFeatureProviderType> для подключения поставщика пользовательской функции DiagnosticsMenuProvider с пользовательской службой IDiagnosticsService. Полный исходный код см. в разделе Практическое руководство. Создание пользовательского соединительного элемент.

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

Иерархия наследования

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

Потокобезопасность

Любые открытые члены этого типа, объявленные как static (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.

См. также

Ссылки

FeatureConnector<TFeatureProviderType> - члены

Microsoft.Windows.Design.Features - пространство имен

FeatureManager

FeatureProvider

FeatureConnectorAttribute

Другие ресурсы

Практическое руководство. Создание пользовательского соединительного элемент

Поставщики функций и соединительные элементы

Общее представление о расширяемости конструктора WPF