让我们有一个功能:
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)>>
我试过,答案是否定的。 可能有人有另一个解决方案来缩短组合函数声明吗?
答案 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