1234567891011121314151617181920212223242526272829303132333435 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Linq.Expressions;
- using Luticate2.Auth.Dbo.Result;
- using Luticate2.Auth.Interfaces;
-
- namespace Luticate2.Auth.Business.Fields.DMEC
- {
- public class LuExpressionConverterStaticMethods : LuExpressionConverter<LuExpressionConverterStaticMethods, LuExpressionConverterStaticMethods>
- {
- public IDictionary<Type, Type> Converters { get; } = new Dictionary<Type, Type>();
-
- public LuExpressionConverterStaticMethods(IServiceProvider serviceProvider) : base(serviceProvider)
- {
- Converters.Add(typeof(Enumerable), typeof(LuExpressionConverterEnumerable));
- }
-
- protected override LuResult<Expression> ConvertInternal(Stack<Expression> expressions, Expression baseExpression, LuExpressionConverterOptions options)
- {
- var expression = expressions.Peek();
- if (expression is MethodCallExpression methodCallExpression)
- {
- if (Converters.ContainsKey(methodCallExpression.Method.DeclaringType))
- {
- var type = Converters[methodCallExpression.Method.DeclaringType];
- var service = (ILuExpressionConverter) ServiceProvider.GetService(type);
- return service.ConvertExpression(expressions, baseExpression, options);
- }
- }
-
- return base.ConvertInternal(expressions, baseExpression, options);
- }
- }
- }
|