Frage

Ich bin mit der Concurrency and Coordination Runtime und Code schreibe ähnlich zu dem, was in der Dokumentation beschrieben. Die folgende Zeile nicht kompilieren:

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

Der Compiler gibt diese Fehlermeldung:

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

Welche weil die Dokumentation verwendet wird mistifying diese Methode mit Typ-Argumente, und es ist klar generisch.

(Ich werde meine eigene Antwort hier posten, dass die ermunterte wie ich es verstehe)

War es hilfreich?

Lösung

Es stellt sich heraus, dass es eine Grenze für die Anzahl der generischen Parameter ist ein mit IterativeTask verwenden können. Es drei nehmen können, aber nicht mehr

Also, dieser Code kompiliert (wenn man itfunc ändert weniger Argument eines verwenden):

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

Wenn Sie wirklich alle Daten in den Argumenten müssen, können Sie irgendeine Art erstellen, sie zu halten:

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top