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

От версии 1.10
отредактировано Alexandr Fokin
на 2026/04/02 19:25
Изменить комментарий: К данной версии нет комментариев
К версии 1.5
отредактировано Alexandr Fokin
на 2026/04/02 19:19
Изменить комментарий: К данной версии нет комментариев

Сводка

Подробности

Свойства страницы
Содержимое
... ... @@ -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