DynamicProperties
- экземпляр класса NameObjectCollection (расширение класса NameObjectCollectionBase), который является, по сути, словарем, хранящим пары значений строка-объект.
Динамические свойства помогают хранить дополнительную информацию об объекте и помогают в ситуациях, когда логика использования объекта разнится от обстоятельств (вызов с разных форм, разными пользователями и т.д.).
Динамические свойства не сохраняются в базу.
DynamicProperties
содержится в каждом объекте класса, наследуемого от DataObject.Использование динамических свойств
Обратиться к динамическим свойствам объекта можно следующим образом:
dataObject.DynamicProperties
Добавление свойства
var someObject = new object();
dataObject.DynamicProperties.Add("propertyName", someObject);
Проверка на наличие свойства у объекта
if (dataObject.DynamicProperties.ContainsKey("propertyName"))
{
...
}
Удаление свойства объекта
dataObject.DynamicProperties.Remove("propertyName");
Основной сценарий использования динамических свойств объекта
Основной сценарий использования на прикладных проектах следующий:
- В динамические свойства объекта добавляется некий флаг.
- В бизнес-сервере обновления объекта проверяется наличие этого флага и выполняется или не выполняется набор некоторых действий.
Пример
Объект СтрокаПланаПогашения
. Например, необходимо ввести шаблон оплаты, содержащий в себе информацию о КредитнойКарте
и Кредите
, но с незаполненными полями ДатыОплаты
и Суммы
. Однако, в бизнес-сервере обновления объекта уже находится проверка, отвечающая за заполненность этих полей. Следовательно, объект не сможет обновиться и сохраниться в базу.
На форме создания шаблона оплаты перед отправкой объекта на сохранение необходимо добавить динамическое свойство
dataObject.DynamicProperties.Add("Template", true); @@
А в бизнес-сервере изменить проверку следующим образом:
if (!UpdatedObject.DynamicProperties.ContainsKey("Template"))
{
// Проверки на обязательность заполненности полей Сумма и ДатаОплаты
}