I created a simple ICommand interface similar to the one in System.Windows.Input: [csharp]interface ICommand { string Description { get; } bool CanExecute(object parameter); void Execute(); }[/csharp] In my project I created a bunch of classes that implement my ICommand interface and I wanted to find and execute them all. I came up with two ways to do this, using a List<ICommand> and reflection. List<ICommand> This is very direct and easy but as I added new commands the list began to grow. Also I had to remember to add my commands to the list as I created them. [csharp] string separator = new string('=', 100); var commandsToExec = new List<ICommand> { new Commands.TestEntityConnectionStringBuilderCommand(), new Commands.BenchmarkingExampleCommand(), new Commands.FastTokenizerBenchmarkCommand(), new Commands.LinqToXmlTest01() }; foreach (var cmd in commandsToExec) if (cmd.CanExecute(null)) { Console.WriteLine(&quo