私は基本的に責任パターンのチェーンのバリエーションですタスクのパイプラインを持っている。実行チェーンの責任のバリエーション
私のパイプラインでの作業は、
internal interface IPTask<T>
{
bool CanExecute(T instance);
T Process(T instance);
}
以下のようになります..and私のプロセッサが
internal interface IProcessor<T>
{
T Execute(T instance);
}
、私の具体的な実装は次のようになりますようになります:
public class Processor<T> : IProcessor<T>
{
private readonly ITasks<T> tasks;
public Processor(ITasks<T> tasks)
{
this.tasks= tasks;
}
public T Execute(T instance)
{
var taskstoExecute = tasks.GetTasks()
.Where(task => task.CanExecute(instance));
taskstoExecute.ToList().ForEach(task=>task.Process(instance));
return T;
}
}
..私の仕事は次のようになります:
internal interface ITasks<T>
{
IEnumerable<IPTask<T>> GetTasks();
}
Tは異なるインスタンスでも構いませんが、汎用契約で結ばれます。タスクの1つは、着信オブジェクトをまったく別のオブジェクトにマッピングし、そこからそのインスタンスを転送することです。あなたが見るであろうよう
は今、私は次のようにこれを変更したいと思い、パイプライン内のすべてのタスクを実行している:次のタスクのためのExecute
方法について
- 入力からでなければなりません以前に実行されたタスク。
CanExecute
がタスクに失敗した場合、パイプラインはタスクの処理を停止する必要があります。
お願いします。また、この目的のためにコードの構造が異なっていると思いますか?