Domanda

Sto utilizzando il Concurrency Runtime e coordinamento e sto scrivendo codice simile a ciò che è descritto nella documentazione. La seguente riga non riesce a compilare:

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

Il compilatore fornisce questo messaggio di errore:

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

Che è mistifying perché la documentazione utilizza questo metodo con argomenti di tipo ed è chiaramente generico.

(ho intenzione di inviare la mia risposta qui, questo è incoraggiato se ho capito bene)

È stato utile?

Soluzione

Si scopre che c'è un limite al numero di parametri generici si può usare con IterativeTask: si può prendere tre, ma non di più

.

Quindi, questo compila codice (una volta che si cambia itfunc di utilizzare un argomento in meno):

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

Se si ha realmente bisogno di tutte le informazioni negli argomenti, è possibile creare un certo tipo di tenerli:

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top