Изменения документа Фиксирование условий в виде компонентов
Редактировал(а) Alexandr Fokin 2026/04/02 19:25
От версии 1.10
отредактировано Alexandr Fokin
на 2026/04/02 19:25
на 2026/04/02 19:25
Изменить комментарий:
К данной версии нет комментариев
К версии 1.5
отредактировано Alexandr Fokin
на 2026/04/02 19:19
на 2026/04/02 19:19
Изменить комментарий:
К данной версии нет комментариев
Сводка
-
Свойства страницы (1 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Содержимое
-
... ... @@ -1,7 +1,7 @@ 1 1 |(% style="width:186px" %) |(% style="width:1247px" %)Возможная реализация идеи фиксации правил в виде отдельных компонентов. 2 2 Позволяет держать все правила в одном месте, гарантирует что изменение повлияет на все нужные места. 3 3 Использование IQueryable т.к. он позволяет строить запросы (но важно учитывать конечный план запроса). 4 -Также можно реализовать компоненты поддругойформат взаимодействия (OneOf, TryGetIfNotNull)(например те, которые часто используются).4 +Также можно реализовать другие паттерны взаимодействия с агрегатом (OneOf, TryGetIfNotNull). 5 5 |(% style="width:186px" %) |(% style="width:1247px" %)[[IEnumerable>>doc:Разработка.NET.C#.Коллекции.IEnumerable.WebHome]], [[IQueryable>>doc:Разработка.NET.C#.Коллекции.IQueryable.WebHome]] 6 6 |(% style="width:186px" %)Пример компонента для фиксации правила/условия.|(% style="width:1247px" %)((( 7 7 |(% style="width:88px" %)InMemory condition|(% style="width:1104px" %){{code language="c#"}}public interface IInMemoryCondition<TData, TParameters> ... ... @@ -68,8 +68,7 @@ 68 68 return _applayQueryableFunc(source, parameters); 69 69 } 70 70 }{{/code}} 71 -|(% style="width:88px" %)Контейнер для агрегата.|(% style="width:1104px" %){{code language="c#"}}// *) Можно использовать в виде композиции, статичного класса, или создания/внедрения отельных компонентов. 72 -public interface TEntityConditions 71 +|(% style="width:88px" %)Контейнер для агрегата.|(% style="width:1104px" %){{code language="c#"}} public interface TEntityConditions 73 73 { 74 74 public ( 75 75 IInMemoryCondition<TEntity, long> Memory, ... ... @@ -86,6 +86,8 @@ 86 86 IQueryableCondition<TEntity, object?> Query 87 87 ) IsRule1 { get; } 88 88 }{{/code}}| 88 + 89 + 89 89 ))) 90 90 |(% style="width:186px" %)Вспомогательный Extension|(% style="width:1247px" %)((( 91 91 |{{code language="c#"}}public static class IConditionExtension ... ... @@ -111,6 +111,9 @@ 111 111 } 112 112 }{{/code}}| 113 113 | | 115 +| | 116 + 117 + 114 114 ))) 115 115 116 116