private List <CommandLineAction> FindCommandLineActions(Type t)
{
var knownAliases = new List <string>();
foreach (var argument in Arguments)
{
knownAliases.AddRange(argument.Aliases);
}
BindingFlags flags = BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public;
var actions = (from p in t.GetProperties(flags)
where CommandLineAction.IsActionImplementation(p)
select CommandLineAction.Create(p, knownAliases)).ToList();
if (t.HasAttr <ArgActionType>())
{
t = t.Attr <ArgActionType>().ActionType;
}
foreach (var action in t.GetMethods(flags).Where(m => CommandLineAction.IsActionImplementation(m)).Select(m => CommandLineAction.Create(m, knownAliases.ToList())))
{
var matchingPropertyBasedAction = actions.Where(a => a.Aliases.First() == action.Aliases.First()).SingleOrDefault();
if (matchingPropertyBasedAction != null)
{
continue;
}
actions.Add(action);
}
return(actions);
}