Чтобы пользоваться предоставляемым сервисами функционалом, необходимо импортировать реализуемый ими интерфейс. Для этого нужно объявить свойство заданного типа и пометить его атрибутом [Import]:
[Import] private IServiceName ServiceName { get; set; } |
Импорт осуществляется с помощью платформы MEF (Managed Extensibility Framework), подробное описание которой можно найти на сайте MSDN eng/rus.
В отличие от обычной реализации MEF приложения (справа) в Ultima Businessware® реализовано распределенное MEF приложение (внизу): |
Для импорта нескольких сервисов, реализующих один интерфейс, используется ImportMany (ImportSource указывать обязательно, т.к. в Ultima Businessware® используется иерархия MEF-контейнеров):
[ImportMany(Source = ImportSource.Local)] private Lazy<IServiceName>[] ServiceName { get; set; } |
Результатом такого импорта будет неактивно инициализированный список сервисов, реализующих указанный интерфейс.
Если из них нужно выбрать какой-то один, можно воспользоваться метаданными импорта:
[ImportMany(Source = ImportSource.Local)] private Lazy<IServiceName, IServiceMetadata>[] ServiceName { get; set; } |