1. I want to undo the task which I just executed. How will you do it?
2. Is your main program the executor of the commands. Don't you want to have some designated class to play around with the commands?
3. Doesn't your commands belong to a specific entity. Like I want the laptop to have multiple commands. Pressing a button command, pressing the power button, opening the CD tray, plugging in the power cable etc.,
4. Finally your commands work on something, like the commands I mentioned above work on the laptop. What does your commands work on?
Also do read about 'states' in commands and there are lot of internet articles to clearly explain Command pattern.
Now to answer your question, it's just polymorphism (virtual method invocation).
If you are not laughing at yourself, then you just didn't get the joke.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com