Разработка преобразователей данных

Для строчек секций и карточки должны быть разработаны преобразователи данных.

Разработка преобразователя данных для строк секций

Поскольку базовым классом строк секций был выбран класс BaseCardSectionRow, преобразователь данных должен наследоваться от класса BaseCardSectionRowMapper<T>.

  1. Добавляем класс преобразователя данных:

    public class NetstatSolutionCardMainInfoMapper : BaseCardSectionRowMapper<NetstatSolutionCardMainInfo>
  2. Регистрируем поля секции в карте преобразователя данных:

    private static void InitializeObjectMap()
    {
     NetstatSolutionCardMainInfoMapper.map = new ObjectMap();
     NetstatSolutionCardMainInfoMapper.map.ObjectTypeId = NetstatSolutionCardDefs.MainInfo.ID;
     NetstatSolutionCardMainInfoMapper.map.Field(NetstatSolutionCardMainInfo.AddressProperty, "Address");
     NetstatSolutionCardMainInfoMapper.map.Field(NetstatSolutionCardMainInfo.IsCheckedProperty, "IsChecked");
    (1)
    1 И так далее.

Для строчек секции Journal преобразователь данных создаётся аналогичным способом.

Разработка преобразователя данных для карточки

Преобразователь данных для карточки оформляется аналогично преобразователю данных для строчек секции, за исключением базового класса.

  1. Добавляем класс преобразователя данных:

    public class NetstatSolutionCardMapper : BaseCardMapper<NetstatSolutionCard>
  2. Регистрируем секции карточки в карте преобразователя данных:

    private static void InitializeObjectMap()
    {
     NetstatSolutionCardMapper.map = new ObjectMap();
     NetstatSolutionCardMapper.map.ObjectTypeId = NetstatSolutionCardDefs.ID;
     NetstatSolutionCardMapper.map.Collection(NetstatSolutionCard.MainInfoProperty, NetstatSolutionCardDefs.MainInfo.ID);
     NetstatSolutionCardMapper.map.Collection(NetstatSolutionCard.JournalProperty, NetstatSolutionCardDefs.Journal.ID);
    }

Создание фабрики преобразователей данных

Для добавления функциональности преобразователей данных в контекст объектов необходимо разработать фабрику преобразователей данных.

  1. Создаем класс фабрики преобразователей данных с базовым классом ObjectMapperFactory:

    public class NetstatSolutionMapperFactory : ObjectMapperFactory
  2. Добавляем конструктор, принимающий контекст объектов. В конструкторе регистрируются все разработанные ранее преобразователи данных.

    public NetstatSolutionMapperFactory(ObjectContext context) : base(context)
    {
     base.RegisterObjectMapper(typeof(NetstatSolutionCard), typeof(NetstatSolutionCardMapper)); (1)
     base.RegisterObjectMapper(typeof(NetstatSolutionCardMainInfo), typeof(NetstatSolutionCardMainInfoMapper));
     base.RegisterObjectMapper(typeof(NetstatSolutionCardJournal), typeof(NetstatSolutionCardJournalMapper));
    }
    1 Регистрируем в фабрике созданные ранее преобразователи данных.
    В RegisterObjectMapper передается тип объекта и тип преобразователя, соответствующего объекту.

После разработки объектной модели карточки (и секций), а также фабрики преобразователей данных, собрав и подключив библиотеку к проекту, уже можно получить объект карточки из контекста объектов, если фабрика преобразователей данных была зарегистрирована в контексте объектов (см. пример инициализации контекста).