Pregunta

Estoy usando el concurrencia y tiempo de ejecución de Coordinación y escribo código similar a lo que es se describe en la documentación. La siguiente línea falla al compilar:

yield return new IterativeTask<string,Object,Object,long[]>("Hi",a,b,ls, itfunc);

El compilador da este mensaje de error:

The non-generic type 'Microsoft.Ccr.Core.IterativeTask' cannot be used with type arguments

¿Qué se mistifying debido a que la documentación utiliza ese método con argumentos de tipo y está claro que es genérica.

(Voy a publicar mi propia respuesta aquí, eso es alentado como yo lo entiendo)

¿Fue útil?

Solución

Resulta que hay un límite en el número de parámetros genéricos se puede utilizar con IterativeTask: se puede tomar de tres pero no más

.

Por lo tanto, este código se compila (una vez que cambie itfunc a utilizar uno menos argumento):

yield return new IterativeTask<string,Object,long[]>("Hi",a,ls, itfunc);

Si usted realmente no necesita toda la información en los argumentos, puede crear algún tipo de mantenerlos:

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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top