Разработка объектной модели карточки

Поскольку ранее было решено поддержать возможность настройки карточки при помощи конструкторов, необходимо сохранить в её объектной модели секции System, Numbers, Processes. Для этого достаточно унаследовать свой класс объекта карточки от базового класса DocsVision.BackOffice.ObjectModel.BaseCard.

  1. Создаем класс объекта карточки:

    public class NetstatSolutionCard : BaseCard
  2. Для каждой секции добавляем статическое поле класса:

    public static readonly ObjectProperty MainInfoProperty;
    public static readonly ObjectProperty JournalProperty;
  3. Добавляем в класс свойства для доступа к данным секции:

    public NetstatSolutionCardMainInfo MainInfo
    {
     get
     {
      if (((ObjectCollection<NetstatSolutionCardMainInfo>)base.GetValue(NetstatSolutionCard.MainInfoProperty)).Count = 0) (1)
      {
       ((ObjectCollection<NetstatSolutionCardMainInfo>)base.GetValue(NetstatSolutionCard.MainInfoProperty)).Add(new NetstatSolutionCardMainInfo());
      }
      return ((ObjectCollection<NetstatSolutionCardMainInfo>)base.GetValue(NetstatSolutionCard.MainInfoProperty)).First<NetstatSolutionCardMainInfo>();
     }
    }
    public ObjectCollection<NetstatSolutionCardJournal> Journal
    {
     get
     {
      return (ObjectCollection<NetstatSolutionCardJournal>)base.GetValue(NetstatSolutionCard.JournalProperty);
     }
    }
    1 Считаем, что данная секция должна быть, а если её нет, то создаем пустую.
  4. Регистрируем связи между секциями карточки и их объектной моделью в статическом конструкторе класса:

    static NetstatSolutionCard()
    {
     NetstatSolutionCard.MainInfoProperty = ObjectProperty.Register("MainInfo", typeof(ObjectCollection<NetstatSolutionCardMainInfo>), typeof(NetstatSolutionCard));
     NetstatSolutionCard.JournalProperty = ObjectProperty.Register("Journal", typeof(ObjectCollection<NetstatSolutionCardJournal>), typeof(NetstatSolutionCard));
    }

В платформе Docsvision принято выносить бизнес-логику карточки из её объектной модели в сервисы. Последуем данному правилу и вынесем основные функции карточки в отдельный сервис (будет разработан позднее).