Inheritance: IMvxCommandCollection
        public virtual IMvxCommandCollection BuildCollectionFor(object owner)
        {
            var toReturn = new MvxCommandCollection(owner);

            CreateCommands(owner, toReturn);
            return(toReturn);
        }
        protected virtual void CreateCommand(object owner, MvxCommandCollection collection, MethodInfo commandMethod,
                                             string commandName, bool hasParameter)
        {
            var canExecuteProperty = this.CanExecutePropertyInfo(owner.GetType(), commandMethod);

            var helper = hasParameter
                             ? (IMvxCommandBuilder)
                               new MvxParameterizedCommandBuilder(commandMethod, canExecuteProperty)
                             : new MvxCommandBuilder(commandMethod, canExecuteProperty);

            var command = helper.ToCommand(owner);
            collection.Add(command, commandName, helper.CanExecutePropertyName);
        }
        protected virtual void CreateCommand(object owner, MvxCommandCollection collection, MethodInfo commandMethod,
                                             string commandName, bool hasParameter)
        {
            var canExecuteProperty = CanExecutePropertyInfo(owner.GetType(), commandMethod);

            var helper = hasParameter
                             ? (IMvxCommandBuilder)
                         new MvxParameterizedCommandBuilder(commandMethod, canExecuteProperty)
                             : new MvxCommandBuilder(commandMethod, canExecuteProperty);

            var command = helper.ToCommand(owner);

            collection.Add(command, commandName, helper.CanExecutePropertyName);
        }
        protected virtual void CreateCommands(object owner, MvxCommandCollection toReturn)
        {
            var commandMethods =
                from method in
                    owner.GetType()
                         .GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy)
                let parameterCount = method.GetParameters().Count()
                where parameterCount <= 1
                let commandName = this.GetCommandNameOrNull(method)
                where !string.IsNullOrEmpty(commandName)
                select new { Method = method, CommandName = commandName, HasParameter = parameterCount > 0 };

            foreach (var item in commandMethods)
            {
                this.CreateCommand(owner, toReturn, item.Method, item.CommandName, item.HasParameter);
            }
        }
        protected virtual void CreateCommands(object owner, MvxCommandCollection toReturn)
        {
            var commandMethods =
                from method in
                owner.GetType()
                .GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.FlattenHierarchy)
                let parameterCount = method.GetParameters().Count()
                                     where parameterCount <= 1
                                     let commandName = GetCommandNameOrNull(method)
                                                       where !string.IsNullOrEmpty(commandName)
                                                       select new { Method = method, CommandName = commandName, HasParameter = parameterCount > 0 };

            foreach (var item in commandMethods)
            {
                CreateCommand(owner, toReturn, item.Method, item.CommandName, item.HasParameter);
            }
        }
 public virtual IMvxCommandCollection BuildCollectionFor(object owner)
 {
     var toReturn = new MvxCommandCollection(owner);
     this.CreateCommands(owner, toReturn);
     return toReturn;
 }