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

От версии 1.9
отредактировано Alexandr Fokin
на 2026/04/02 19:22
Изменить комментарий: К данной версии нет комментариев
К версии 1.4
отредактировано Alexandr Fokin
на 2026/04/02 19:17
Изменить комментарий: Update document after refactoring.

Сводка

Подробности

Свойства страницы
Содержимое
... ... @@ -1,7 +1,4 @@
1 1  |(% style="width:186px" %) |(% style="width:1247px" %)Возможная реализация идеи фиксации правил в виде отдельных компонентов.
2 -Позволяет держать все правила в одном месте, гарантирует что изменение повлияет на все нужные места.
3 -Использование IQueryable т.к. он позволяет строить запросы (но важно учитывать конечный план запроса).
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
68 +|(% 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}}|
85 +
86 +
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  | |
112 +| |
113 +
114 +
114 114  )))
115 115  
116 116