Редактировал(а) Alexandr Fokin 2026/04/02 19:25

От версии 1.1
отредактировано Alexandr Fokin
на 2026/04/02 19:14
Изменить комментарий: К данной версии нет комментариев
К версии 1.9
отредактировано Alexandr Fokin
на 2026/04/02 19:22
Изменить комментарий: К данной версии нет комментариев

Сводка

Подробности

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