private Type[] GetAllCommandTypes() { return (from type in Assembly.GetExecutingAssembly().GetTypes() where typeof(ICommand).IsAssignableFrom(type) && type != typeof(ICommand) select type ).ToArray(); }