Exemple #1
0
        static IEnumerable <ICommand> GetCommands(ICommand parent, IObjectProvider containingObject, MemberInfo m, IEnumerable <IOption> inheritedOptions)
        {
            if (m.GetCustomAttribute <ModuleAttribute>() != null)
            {
                return(GetCommands(parent, ObjectProvider.ResolveNow(containingObject, m), inheritedOptions));
            }

            return(ObjectCommand.Create(parent, m, containingObject).ToEnumerable());
        }
Exemple #2
0
        public static IEnumerable <IOption> GetOptions(IObjectProvider container, MemberInfo member)
        {
            if (container == null)
            {
                throw new ArgumentNullException(nameof(container));
            }

            if (member == null)
            {
                throw new ArgumentNullException(nameof(member));
            }

            if (!(member is FieldInfo || member is PropertyInfo))
            {
                return(noOptions);
            }

            if (member.GetCustomAttribute <ModuleAttribute>() != null)
            {
                return(Option.GetOptions(ObjectProvider.ResolveNow(container, member)));
            }

            var usage = member.GetUsage();

            if (!usage.HasValue)
            {
                return(noOptions);
            }

            var command = member.GetCustomAttribute <CommandAttribute>().ToMaybe();

            if (command.HasValue)
            {
                return(noOptions);
            }

            if (member is FieldInfo)
            {
                return(new[] { (IOption) new FieldOption(container, (FieldInfo)member) });
            }
            else if (member is PropertyInfo)
            {
                return(new[] { (IOption) new PropertyOption(container, (PropertyInfo)member) });
            }
            throw new NotSupportedException(String.Format("{0} of type {1} is not supported.", member, member.GetType()));
        }