Tôi đã có một đường ống nhiệm vụ về cơ bản là một biến thể của chuỗi mô hình trách nhiệm.Thực hiện chuỗi biến đổi trách nhiệm
Một nhiệm vụ trong đường ống của tôi trông như sau
internal interface IPTask<T>
{
bool CanExecute(T instance);
T Process(T instance);
}
..và xử lý của tôi trông giống như
internal interface IProcessor<T>
{
T Execute(T instance);
}
và thực hiện cụ thể của tôi trông như thế này:
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;
}
}
.. và nhiệm vụ của tôi trông giống như sau:
internal interface ITasks<T>
{
IEnumerable<IPTask<T>> GetTasks();
}
T có thể là các trường hợp khác nhau, nhưng bị ràng buộc bởi hợp đồng chung. Một trong các nhiệm vụ là ánh xạ đối tượng đến vào một đối tượng hoàn toàn khác và chuyển tiếp cá thể đó từ đó trở đi.
Bây giờ như bạn sẽ thấy, tôi đang thực hiện tất cả các nhiệm vụ trong các đường ống, tôi muốn sửa đổi này như sau:
- đầu vào cho phương pháp
Execute
cho nhiệm vụ tiếp theo nên từ nhiệm vụ được thực hiện trước đó. - Nếu
CanExecute
không thực hiện được nhiệm vụ thì đường ống sẽ ngừng xử lý các tác vụ.
Bạn có thể vui lòng giúp tôi trong việc này. Bạn cũng mong đợi mã được cấu trúc khác nhau cho mục đích này?