diff options
Diffstat (limited to 'dsa/FireBase/Offline/Internals')
-rw-r--r-- | dsa/FireBase/Offline/Internals/MemberAccessVisitor.cs | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/dsa/FireBase/Offline/Internals/MemberAccessVisitor.cs b/dsa/FireBase/Offline/Internals/MemberAccessVisitor.cs index 89a77da..fe888ac 100644 --- a/dsa/FireBase/Offline/Internals/MemberAccessVisitor.cs +++ b/dsa/FireBase/Offline/Internals/MemberAccessVisitor.cs @@ -3,37 +3,29 @@ using System.Linq.Expressions; using System.Reflection; using Newtonsoft.Json; -namespace Firebase.Database.Offline.Internals -{ - public class MemberAccessVisitor : ExpressionVisitor - { +namespace Firebase.Database.Offline.Internals { + public class MemberAccessVisitor : ExpressionVisitor { private readonly IList<string> propertyNames = new List<string>(); private bool wasDictionaryAccess; public IEnumerable<string> PropertyNames => propertyNames; - public override Expression Visit(Expression expr) - { - if (expr?.NodeType == ExpressionType.MemberAccess) - { - if (wasDictionaryAccess) - { + public override Expression Visit(Expression expr) { + if (expr?.NodeType == ExpressionType.MemberAccess) { + if (wasDictionaryAccess) { wasDictionaryAccess = false; } - else - { + else { var memberExpr = (MemberExpression) expr; var jsonAttr = memberExpr.Member.GetCustomAttribute<JsonPropertyAttribute>(); propertyNames.Add(jsonAttr?.PropertyName ?? memberExpr.Member.Name); } } - else if (expr?.NodeType == ExpressionType.Call) - { + else if (expr?.NodeType == ExpressionType.Call) { var callExpr = (MethodCallExpression) expr; - if (callExpr.Method.Name == "get_Item" && callExpr.Arguments.Count == 1) - { + if (callExpr.Method.Name == "get_Item" && callExpr.Arguments.Count == 1) { var e = Expression.Lambda(callExpr.Arguments[0]).Compile(); propertyNames.Add(e.DynamicInvoke().ToString()); wasDictionaryAccess = callExpr.Arguments[0].NodeType == ExpressionType.MemberAccess; |