Как расширить делегат Func, чтобы он содержал более четырех параметров? - PullRequest
2 голосов
/ 09 ноября 2009

Я использовал LINQ со скомпилированными запросами, в основном передавая в скомпилированный запрос, используя Func, но проблема в том, что он имеет максимум четыре параметра.

Это хорошая практика, чтобы расширить это?

Есть ли способ расширить это или я должен создать свой собственный делегат?

Иногда мне нужно передать шесть параметров, а остальные пять и еще четыре или меньше ... так что с четырьмя или менее я мог бы продолжать использовать делегат Func.

В настоящее время передача в контексте данных и набор необходимых мне параметров зависят от каждого отдельного скомпилированного запроса.

Ответы [ 2 ]

5 голосов
/ 09 ноября 2009

Просто объявите своих собственных делегатов - это всего лишь одна строка кода, чтобы сделать это. См. мои примеры объявления делегатов .NET 3.5 в .NET 2.0 для своего рода шаблона, если вам это нужно.

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

Обратите внимание, что в .NET 4.0 есть поддержка Func / Action с максимум 8 параметрами.

2 голосов
/ 09 ноября 2009

Что сказал Джон плюс ...

Как вы и предлагали, обычно вы не должны заканчивать слишком большим количеством параметров - обычно вы должны найти какую-то объединяющую концепцию, которая подсказывает вам Ввести объект параметра . Сказав это, 4 не будет тем местом, где я поставлю «просто сумасшедшую» линию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...