12345678910111213141516171819202122232425262728293031 |
- using System;
- using System.Linq.Expressions;
- using Luticate2.Auth.Dbo;
- using Luticate2.Auth.Dbo.Pagination;
- using Luticate2.Auth.Dbo.Result;
- using Microsoft.CodeAnalysis.CSharp.Scripting;
- using Microsoft.CodeAnalysis.Scripting;
-
- namespace Luticate2.Auth.Business.Pagination
- {
- public class LuFilterParser
- {
- public static LuResult<LuFilterDbo> Parse<T>(string data)
- {
- var completeData = $"(x) => ({data})";
- try
- {
- var options = ScriptOptions.Default.AddReferences(typeof(LuFilterParser).Assembly);
- var expr = CSharpScript.EvaluateAsync<Expression<Func<T, bool>>>(completeData, options).Result;
- return LuResult<LuFilterDbo>.Ok(new LuFilterDbo
- {
- Expression = expr
- });
- }
- catch (Exception e)
- {
- return LuResult<LuFilterDbo>.Error(LuStatus.InputError.ToInt(), e);
- }
- }
- }
- }
|