Разработка сервиса для работы с карточкой
Поскольку ранее было решено вынести бизнес-логику карточки за пределы её класса в сервис, разработаем его.
-
Создаем интерфейс, описывающий функциональность будущего сервиса:
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, по интерфейсу.
После реализации фабрики сервисов, можно собрать проект и подключить библиотеку, содержащую сервис (интерфейс, реализацию) и фабрику сервисов, к проекту и запросить данный сервис из контекста объектов, если фабрика сервисов зарегистрирована в контексте объектов (см. пример инициализации контекста объектов).
|
Типы и интерфейс, разработанные для сервиса, собраны в папке |