summaryrefslogtreecommitdiff
path: root/FireBase/Offline/Internals/MemberAccessVisitor.cs
diff options
context:
space:
mode:
Diffstat (limited to 'FireBase/Offline/Internals/MemberAccessVisitor.cs')
-rw-r--r--FireBase/Offline/Internals/MemberAccessVisitor.cs51
1 files changed, 0 insertions, 51 deletions
diff --git a/FireBase/Offline/Internals/MemberAccessVisitor.cs b/FireBase/Offline/Internals/MemberAccessVisitor.cs
deleted file mode 100644
index 1f7cb11..0000000
--- a/FireBase/Offline/Internals/MemberAccessVisitor.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-namespace Firebase.Database.Offline.Internals
-{
- using System.Collections.Generic;
- using System.Linq.Expressions;
- using System.Reflection;
-
- using Newtonsoft.Json;
-
- public class MemberAccessVisitor : ExpressionVisitor
- {
- private readonly IList<string> propertyNames = new List<string>();
-
- private bool wasDictionaryAccess;
-
- public IEnumerable<string> PropertyNames => this.propertyNames;
-
- public MemberAccessVisitor()
- {
- }
-
- public override Expression Visit(Expression expr)
- {
- if (expr?.NodeType == ExpressionType.MemberAccess)
- {
- if (this.wasDictionaryAccess)
- {
- this.wasDictionaryAccess = false;
- }
- else
- {
- var memberExpr = (MemberExpression)expr;
- var jsonAttr = memberExpr.Member.GetCustomAttribute<JsonPropertyAttribute>();
-
- this.propertyNames.Add(jsonAttr?.PropertyName ?? memberExpr.Member.Name);
- }
- }
- else if (expr?.NodeType == ExpressionType.Call)
- {
- var callExpr = (MethodCallExpression)expr;
- if (callExpr.Method.Name == "get_Item" && callExpr.Arguments.Count == 1)
- {
- var e = Expression.Lambda(callExpr.Arguments[0]).Compile();
- this.propertyNames.Add(e.DynamicInvoke().ToString());
- this.wasDictionaryAccess = callExpr.Arguments[0].NodeType == ExpressionType.MemberAccess;
- }
- }
-
- return base.Visit(expr);
- }
- }
-}