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

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

Сводка

Подробности

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