Перегрузите оператор + и объедините делегатов. Примерно так:
public class Write
{
private readonly Action _act;
public Write(Action act)
{
_act = act;
}
public void Invoke()
{
_act();
}
public static Write operator +(Write left, Write right)
{
//Do appropriate null-checking.
var del = (Action)Delegate.Combine(left._act, right._act);
return new Write(del);
}
}
И используя это так:
Write write1 = new Write(() => Console.WriteLine("Write1"));
Write write2 = new Write(() => Console.WriteLine("Write2"));
Write write3 = new Write(() => Console.WriteLine("Write3"));
Write writeall = write1 + write2 + write3;
writeall.Invoke();
Распечатает
Write1
Write2
Write3