5 Stimmen

Wie implementiert man eine echte Funktionspipeline in C#?

Wie erstellt man eine echte Funktionspipeline mit C#? Ich habe einige Idee wie folgt, aber es ist nicht eine echte Pipeline

public static IEnumerable<T> ForEachPipeline<T>(this IEnumerable<T> source, params Func<T, T>[] pipeline)
{
 foreach (var element in source) {
  yield return ExecutePipeline(element, pipeline);
 }
}

private static T ExecutePipeline<T>(T element, IEnumerable<Func<T, T>> jobs)
{
 var arg = element;
 T result = default(T);
 foreach (var job in jobs) {
  result = job.Invoke(arg);
  arg = result;
 }
 return result;
}

In dem obigen Code wird jedes Element von IEnumerable<T> erst dann in die Pipeline gelangen, wenn das vorherige Element die Ausführung aller Funktionen beendet hat (d. h. die Pipeline verlässt), aber gemäß der Definition, wenn element1 beendet die Ausführung func1 und starten Sie die Ausführung func2 zu diesem Zeitpunkt element2 sollte mit der Ausführung von func1 und so weiter, um den Datenfluss in der Pipeline aufrechtzuerhalten.

Ist diese Art von Szenario möglich, in C# zu implementieren? Wenn möglich, geben Sie mir bitte einige Beispiel-Code.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X