Advertisement
yambroskin

Untitled

Jul 22nd, 2018
340
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using EleWise.ELMA.ComponentModel;
  2. using EleWise.ELMA.Model.Types.Settings;
  3. using System;
  4. using System.Collections.Generic;
  5.  
  6. namespace EleWise.ELMA.Model.Entities
  7. {
  8.     /// <summary>
  9.     /// Базовый интерфейс сущности
  10.     /// </summary>
  11.     [Component, ExtensionPoint(false, ComponentType.All, ServiceScope.Application)]
  12.     public interface IEntity : IIdentified
  13.     {
  14.         /// <summary>
  15.         ///  Возвращает строковое представление сущности
  16.         /// </summary>
  17.         /// <param name="format">Формат отображения, свойства доступны через {$Имя свойства}</param>
  18.         /// <returns>Строка представляющая сущность</returns>
  19.         string ToString(string format);
  20.  
  21.         /// <summary>
  22.         /// Получить значение свойства по его уникальному идентификатору
  23.         /// </summary>
  24.         /// <param name="propertyUid">Уникальный идентификатор свойства</param>
  25.         /// <returns>Значение свойства</returns>
  26.         object GetPropertyValue(System.Guid propertyUid);
  27.  
  28.         /// <summary>
  29.         /// Получить значение свойства по его уникальному идентификатору
  30.         /// </summary>
  31.         /// <typeparam name="T">Тип свойства</typeparam>
  32.         /// <param name="propertyUid">Уникальный идентификатор свойства</param>
  33.         /// <returns>Значение свойства</returns>
  34.         T GetPropertyValue<T>(System.Guid propertyUid);
  35.  
  36.         /// <summary>
  37.         /// Установить значение свойства по его уникальному идентификатору
  38.         /// </summary>
  39.         /// <param name="propertyUid">Уникальный идентификатор свойства</param>
  40.         /// <param name="value">Значение свойства</param>
  41.         void SetPropertyValue(System.Guid propertyUid, object value);
  42.  
  43.         /// <summary>
  44.         /// Получить настройки свойства (возвращаются настройки для данного экземпляра сущности, либо копия общих)
  45.         /// </summary>
  46.         /// <param name="propertyUid">Уникальный идентификатор свойства</param>
  47.         TSettings GetPropertySettings<TSettings>(System.Guid propertyUid) where TSettings : TypeSettings;
  48.  
  49.         /// <summary>
  50.         /// Получить настройки свойства (возвращаются настройки для данного экземпляра сущности, либо копия общих)
  51.         /// </summary>
  52.         /// <param name="propertyUid">Уникальный идентификатор свойства</param>
  53.         TypeSettings GetPropertySettings(System.Guid propertyUid);
  54.  
  55.         /// <summary>
  56.         /// Получить настройки свойства (возвращаются настройки для данного экземпляра сущности, либо копия общих)
  57.         /// </summary>
  58.         /// <param name="propertyUid">Уникальный идентификатор свойства</param>
  59.         /// <param name="defaultSettings">Настройки по умолчанию</param>
  60.         TypeSettings GetPropertySettings(System.Guid propertyUid, TypeSettings defaultSettings);
  61.  
  62.         /// <summary>
  63.         /// Получить настройки свойства, сохраненные для данного объекта. Если их нет - то возвращается null
  64.         /// </summary>
  65.         /// <param name="propertyUid">Уникальный идентификатор свойства</param>
  66.         TypeSettings LoadPropertyInstanceSettings(System.Guid propertyUid);
  67.  
  68.         /// <summary>
  69.         /// Сохранить настройки свойства для данного объекта
  70.         /// </summary>
  71.         /// <param name="propertyUid">Уникальный идентификатор свойства</param>
  72.         /// <param name="settings">Настройки</param>
  73.         void SavePropertyInstanceSettings(System.Guid propertyUid, TypeSettings settings);
  74.  
  75.         /// <summary>
  76.         /// Загрузить хранилище настроек свойств даннного объекта
  77.         /// </summary>
  78.         /// <param name="createIfNotExists">Создавать ли хранилище, если оно не существует</param>
  79.         /// <param name="loadIfNotLoaded">Загружать, если не были загружены</param>
  80.         /// <returns></returns>
  81.         ITypeSettingsInstanceStore LoadSettingsInstanceStore(bool createIfNotExists, bool loadIfNotLoaded);
  82.  
  83.         /// <summary>
  84.         /// Получить сущности, которые содержатся в данной сущности (например, элементы блока, настройки сущности)
  85.         /// </summary>
  86.         /// <returns></returns>
  87.         System.Collections.Generic.IEnumerable<IEntity> GetContainedEntities();
  88.  
  89.         /// <summary>
  90.         /// Получить корневую сущность (если это элемент блока, то возвращается первый родитель)
  91.         /// </summary>
  92.         /// <returns></returns>
  93.         IEntity GetRootEntity();
  94.  
  95.         /// <summary>
  96.         /// Сохранить сущность
  97.         /// </summary>
  98.         void Save();
  99.  
  100.         /// <summary>
  101.         /// Удалить сущность
  102.         /// </summary>
  103.         void Delete();
  104.  
  105.         /// <summary>
  106.         /// Обновить сущность из БД
  107.         /// </summary>
  108.         void Refresh();
  109.  
  110.         /// <summary>
  111.         /// Сущность не сохранялась в базе
  112.         /// </summary>
  113.         /// <returns></returns>
  114.         bool IsNew();
  115.  
  116.         /// <summary>
  117.         /// Есть ли несохраненные изменения в сущности
  118.         /// </summary>
  119.         /// <returns>True, если есть</returns>
  120.         bool IsDirty();
  121.  
  122.         /// <summary>
  123.         /// Получить идентификаторы измененных свойств
  124.         /// </summary>
  125.         /// <returns>Список идентификаторов свойств</returns>
  126.         System.Guid[] GetDirtyPropertyUids();
  127.     }
  128. }
Advertisement
Advertisement
Advertisement
RAW Paste Data Copied
Advertisement