Pergunta

Estou usando o Tempo de execução de simultaneidade e coordenação e estou escrevendo código semelhante ao descrito na documentação. A linha a seguir falha em compilar:

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

O compilador fornece esta mensagem de erro:

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

O que é misturado porque a documentação usa esse método com argumentos de tipo e é claramente genérico.

(Vou postar minha própria resposta aqui, isso é encorajado Como eu entendo)

Foi útil?

Solução

Acontece que há um limite para o número de parâmetros genéricos que se pode usar com o iterativeTask: pode levar três, mas não mais.

Portanto, esse código compila (depois de alterar o ITFUNC para usar menos um argumento):

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

Se você realmente precisa de todas as informações nos argumentos, pode criar algum tipo para mantê -los:

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top