diff options
author | Dennis Kobert <d-kobert@web.de> | 2019-06-11 23:38:13 +0200 |
---|---|---|
committer | Dennis Kobert <d-kobert@web.de> | 2019-06-11 23:38:13 +0200 |
commit | 2fa4a0e50ebfc97059c8b84dbd17e79f9afc8a8d (patch) | |
tree | c3b34ccb2737e347a73768536895cbbaab13cc01 /FireBase/Offline/Internals | |
parent | ec991104f56e90d7bb2878da2fe6ed4e585dfc46 (diff) | |
parent | af74efccf8d21e6151022b71f3cacd3fa83024ee (diff) |
Merge branch 'rework-backend'
Diffstat (limited to 'FireBase/Offline/Internals')
-rw-r--r-- | FireBase/Offline/Internals/MemberAccessVisitor.cs | 51 |
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); - } - } -} |