匿名类型函数声明

时间:2013-07-20 11:51:57

标签: c# anonymous-function

让我们有一个功能:

Func<argsFoo, resultFoo> foo= x=>new resultFoo(x);
Func<argsBar, resultBar> bar= x=>new resultBar(x);
Func<argsBaz, resultBaz> baz= x=>new resultBaz(x);

我想创建一个复杂的函数,它使用上面声明的所有函数。

像这样:

Func
<
    Func<argsFoo, resultFoo>,
    Func<argsBar, resultBar>,
    Func<argsBaz,resultBaz>,
    fooBarBazResult
> fooBarBaz=...

重点是这样的声明会破坏程序的可读性。在这种情况下,类型推断不起作用。

问题:我可以使用这样的内容吗?

FooBarBaz<typeof(foo),typeof(bar)>,typeof(baz)>>

我试过,答案是否定的。 可能有人有另一个解决方案来缩短组合函数声明吗?

2 个答案:

答案 0 :(得分:1)

您始终可以声明自己的代理,该代理将描述您的方法:

public delegate resultMy MyDelegate(argsMy arg)

并使用较短的名称MyDelegate

Func<FooDelagate, BatDelegate, BazDelegate>

甚至那个代表你可以命名以简化你的代码。

答案 1 :(得分:0)

好吧,您可以在文件顶部添加using语句,以简化:

using SomeName = Func<Func<ArgsFoo, ResultFoo>, Func<ArgsBar, ResultBar>, Func<ArgsBaz, ResultBaz>>;

然后你就可以这样使用它:

SomeName myFunc = //the func