Вопрос

Я предполагаю, что большинству из нас в какой-то момент придется столкнуться с этим, поэтому я решил задать вопрос.

Если у вас в BLL много коллекций и вы обнаруживаете, что снова и снова пишете одни и те же старые встроенные (анонимные) предикаты, то здесь явно есть смысл для инкапсуляции, но как лучше всего этого добиться?

Проект, над которым я сейчас работаю, использует старый подход статического класса «ответить всем» (например, класс User и статический класс UserPredicates), но это кажется несколько неуклюжим и немного отговоркой.

В основном я работаю на C#, поэтому было бы очень полезно придерживаться этого контекста, но я думаю, что это достаточно общий вопрос, чтобы можно было услышать о других языках.

Также я ожидаю, что с появлением LINQ и Lambdas будет разница в том, как этого можно достичь, поэтому мне было бы интересно услышать, как это можно сделать как в стилях .Net2.0, так и в стилях 3.0/3.5.

Заранее спасибо.

Это было полезно?

Решение

Шаблон спецификации возможно, стоит проверить.
При некотором полиморфизме и использовании дженериков это должно работать.

Другие советы

По сути, предикат — это просто реализация шаблона проектирования спецификации.Вы можете прочитать о шаблоне спецификации в Доменно-ориентированный дизайн.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top