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