0

让我们有一个功能:

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)>>

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

4

2 回答 2

1

您始终可以声明自己的委托来描述您的方法:

public delegate resultMy MyDelegate(argsMy arg)

并使用较短的名称MyDelegate

Func<FooDelagate, BatDelegate, BazDelegate>

甚至您可以命名该委托以简化您的代码。

于 2013-07-20T11:59:01.800 回答
0

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

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

然后你可以这样使用它:

SomeName myFunc = //the func
于 2013-07-20T11:56:55.027 回答