summaryrefslogtreecommitdiff
path: root/FireBase/Offline/Internals/MemberAccessVisitor.cs
diff options
context:
space:
mode:
authorDennis Kobert <d-kobert@web.de>2019-06-11 23:38:13 +0200
committerDennis Kobert <d-kobert@web.de>2019-06-11 23:38:13 +0200
commit2fa4a0e50ebfc97059c8b84dbd17e79f9afc8a8d (patch)
treec3b34ccb2737e347a73768536895cbbaab13cc01 /FireBase/Offline/Internals/MemberAccessVisitor.cs
parentec991104f56e90d7bb2878da2fe6ed4e585dfc46 (diff)
parentaf74efccf8d21e6151022b71f3cacd3fa83024ee (diff)
Merge branch 'rework-backend'
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);
- }
- }
-}