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 - пространство имен
Другие ресурсы
Практическое руководство. Создание пользовательского соединительного элемент