Command Design Pattern in C#