public static void Parse(SortedSet<string> list, Expression expr)
{
if (expr == null)
return;
BinaryExpression eb = expr as BinaryExpression;
MemberExpression em = expr as MemberExpression;
UnaryExpression eu = expr as UnaryExpression;
MethodCallExpression ec = expr as MethodCallExpression;
if (em != null) // member expression
{
list.Add(em.Member.Name);
}
else if (eb != null) // binary expression
{
Parse(list, eb.Left);
Parse(list, eb.Right);
}
else if (eu != null) // unary expression
{
Parse(list, eu.Operand);
}
else if (ec != null) // call expression
{
foreach (var a in ec.Arguments)
Parse(list, a);
}
return;
}