如何扩展Func委托以包含超过最多四个参数?

时间:2009-11-09 10:01:13

标签: c# linq-to-sql delegates lambda

我一直在使用带有编译查询的LINQ,基本上是使用Func传递到已编译的查询中,但问题是它最多有四个参数。

扩展这个是好的做法吗?

有没有办法扩展这个或我应该创建自己的委托?

有时我需要传递六个参数,其他五个,其他五个或更少...所以如果有四个或更少,我可以继续使用Func代表。

目前传递数据上下文和我需要的参数混合依赖于每个单独编译的查询。

2 个答案:

答案 0 :(得分:5)

只需声明自己的代理 - 这只是一行代码。如果需要,请参阅my examples for declaring the .NET 3.5 delegates in .NET 2.0了解一种模板。

我不知道这对LINQ编译的查询有多好 - 希望它不会有问题,但是你的用例还不够清晰,我无法肯定地说。

请注意,在.NET 4.0中,支持Func / Action,最多包含8个参数。

答案 1 :(得分:2)

Jon说什么加上......

正如你所建议的那样,一般来说你不应该有太多的参数 - 通常你会发现一些联合概念跳出来告诉你Introduce Parameter Object。话虽如此,4不会是我放置'那只是疯狂'线的地方。