Ejemplo n.º 1
0
    public static bool AllowParentOption(this CommandInfo command, CommandOption option)
    {
        // Got an immediate parent?
        if (command?.Parent != null)
        {
            // Is the current node's settings type the same as the previous one?
            if (command.SettingsType == command.Parent.SettingsType)
            {
                var parameters = command.Parent.Parameters.OfType <CommandOption>().ToArray();
                if (parameters.Length > 0)
                {
                    foreach (var parentOption in parameters)
                    {
                        // Is this the same one?
                        if (option.HaveSameBackingPropertyAs(parentOption))
                        {
                            // Is it part of the same settings class.
                            if (option.Property.DeclaringType == command.SettingsType)
                            {
                                // Allow it.
                                return(true);
                            }

                            // Don't allow it.
                            return(false);
                        }
                    }
                }
            }
        }

        return(false);
    }
Ejemplo n.º 2
0
    public static bool HaveParentWithOption(this CommandInfo command, CommandOption option)
    {
        var parent = command?.Parent;

        while (parent != null)
        {
            foreach (var parentOption in parent.Parameters.OfType <CommandOption>())
            {
                if (option.HaveSameBackingPropertyAs(parentOption))
                {
                    return(true);
                }
            }

            parent = parent.Parent;
        }

        return(false);
    }