Разработка сервиса для работы с карточкой
Поскольку ранее было решено вынести бизнес-логику карточки за пределы её класса в сервис, разработаем его.
-
Создаем интерфейс, описывающий функциональность будущего сервиса:
public interface INetstatSolutionService { NetstatSolutionCard.ObjectModel.NetstatSolutionCard CreateCard(string name, string address, int type); (1) ObjectModel.NetstatSolutionCardJournal AddJournalEntry(NetstatSolutionCard.ObjectModel.NetstatSolutionCard card, DateTime date, bool result); (2) }
1 Создание новой карточки. 2 Добавление результата проверки в журнал. -
Добавляем класс, реализующий интерфейс
INetstatSolutionService
и наследующий отContextService
— базовый класс сервисов объектной модели:internal class NetstatSolutionService : ContextService, INetstatSolutionService
Специально ограничиваем область видимости класса, т.к. контекст объектов предоставляет сервис по его интерфейсу.
-
Реализуем функциональность, описанную интерфейсом
INetstatSolutionService
.Реализацию смотрите в проекте решения.
-
Создаем фабрику сервисов в виде класса, наследующего от
ServiceFactory
. Фабрика предоставляет экземпляр сервиса по его типу.public class NetstatSolutionServiceFactory : ServiceFactory { protected override object GetService(Type serviceType) { if (serviceType = typeof(INetstatSolutionService)) (1) { return new NetstatSolutionService(); } return null; } }
1 Метод должен вернуть экземпляр класса, реализующего INetstatSolutionService
, по интерфейсу.
После реализации фабрики сервисов, можно собрать проект и подключить библиотеку, содержащую сервис (интерфейс, реализацию) и фабрику сервисов, к проекту и запросить данный сервис из контекста объектов, если фабрика сервисов зарегистрирована в контексте объектов (см. пример инициализации контекста объектов).
Типы и интерфейс, разработанные для сервиса, собраны в папке |