>>142
素朴に考えてみた。

listdataの要素の型をXとする。
var m = new Machine<X>(listdata);
Result r =
m.Validate(x => CheckA(x))
.Validate(x => CheckB(x))
. ...
.Resolve()
;
if(r.HasError){
エラー処理(r.Error);
}else{
登録処理(datalist);
}
みたいなMachineとResultを作る。