我正在使用Concurrency and Coordination Runtime并且正在编写类似于文档中描述的代码。以下行无法编译:
yield return new IterativeTask<string,Object,Object,long[]>("Hi",a,b,ls, itfunc);
编译器提供此错误消息:
The non-generic type 'Microsoft.Ccr.Core.IterativeTask' cannot be used with type arguments
这是错误的,因为文档使用带有类型参数的方法,而且它显然是通用的。
(我将在这里发布我自己的答案,据我所知encouraged
答案 0 :(得分:3)
事实证明,IterativeTask可以使用的通用参数数量有限:它可能需要三个但不能更多。
因此,此代码编译(一旦您更改itfunc以使用少一个参数):
yield return new IterativeTask<string,Object,long[]>("Hi",a,ls, itfunc);
如果确实需要参数中的所有信息,可以创建一些类型来保存它们:
struct Z {
string msg;
Object one;
Object two;
long[] ls;
}
Z z = new Z { msg="Hi", one=a, two=b, ls= longs };
yield return new IterativeTask<Z>(z, itfunc);