在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → DynamicExpresso:C# 表达式解释器

DynamicExpresso:C# 表达式解释器

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:0.42M
  • 下载次数:1
  • 浏览次数:41
  • 发布时间:2024-05-21
  • 实例类别:一般编程问题
  • 发 布 人:chenxiaolan
  • 文件格式:.zip
  • 所需积分:2
 

实例介绍

【实例简介】

Dynamic Expresso 是一个用于解释简单 C# 语句的解释器,支持 .NET Core 3.1、.NET Core 5.0 及以上版本、.NET 4.6.2。

Dynamic Expresso 嵌入了自己的解析逻辑,通过将 C# 语句转换为 .NET lambda 表达式或委托来真正解释 C# 语句。

使用 Dynamic Expresso,开发人员可以创建可编写脚本的应用程序、在不进行编译的情况下执行 .NET 代码或创建动态 LINQ 语句。

语句使用 C# 语言规范的子集编写。全局变量或参数可以被注入并在表达式中使用。它不生成程序集,而是在运行时创建表达式树。

例如,您可以评估数学表达式:

var interpreter = new Interpreter();
var result = interpreter.Eval("8 / 2 + 2");

或解析带有变量或参数的表达式并多次调用它:

var interpreter = new Interpreter().SetVariable("service", new ServiceExample());
string expression = "x > 4 ? service.OneMethod() : service.AnotherMethod()";
Lambda parsedExpression = interpreter.Parse(expression, new Parameter("x", typeof(int)));
var result = parsedExpression.Invoke(5);

【实例截图】
【核心代码】
文件清单
└── DynamicExpresso-f966f84f6d9fbe809801940896d65534c5336906
    ├── CODEOWNERS
    ├── docs
    │   └── workflow.png
    ├── DynamicExpresso.sln
    ├── DynamicExpressoWebShell.sln
    ├── LICENSE
    ├── README.md
    ├── sample
    │   └── DynamicExpressoWebShell
    │       ├── appsettings.Development.json
    │       ├── appsettings.json
    │       ├── Controllers
    │       │   ├── HomeController.cs
    │       │   └── InterpreterController.cs
    │       ├── DynamicExpressoWebShell.csproj
    │       ├── Models
    │       │   └── ErrorViewModel.cs
    │       ├── Program.cs
    │       ├── Properties
    │       │   ├── launchSettings.json
    │       │   └── PublishProfiles
    │       │       └── dynamic-expresso - Web Deploy.pubxml
    │       ├── Services
    │       │   ├── CommandsHistory.cs
    │       │   └── WebShell.cs
    │       ├── Startup.cs
    │       ├── Views
    │       │   ├── Home
    │       │   │   └── Index.cshtml
    │       │   └── Shared
    │       │       └── Error.cshtml
    │       └── wwwroot
    │           ├── Content
    │           │   ├── bootstrap.css
    │           │   ├── bootstrap.min.css
    │           │   ├── bootstrap-responsive.css
    │           │   ├── bootstrap-responsive.min.css
    │           │   ├── images
    │           │   │   ├── glyphicons-halflings.png
    │           │   │   └── glyphicons-halflings-white.png
    │           │   └── webshell.css
    │           └── Scripts
    │               ├── bootstrap.js
    │               ├── bootstrap.min.js
    │               ├── jquery-1.9.0.intellisense.js
    │               ├── jquery-1.9.0.js
    │               ├── jquery-1.9.0.min.js
    │               ├── jquery-1.9.0.min.map
    │               └── webshell.js
    ├── src
    │   ├── DynamicExpresso.Core
    │   │   ├── AssignmentOperators.cs
    │   │   ├── DefaultNumberType.cs
    │   │   ├── Detector.cs
    │   │   ├── DynamicExpresso.Core.csproj
    │   │   ├── Exceptions
    │   │   │   ├── AssignmentOperatorDisabledException.cs
    │   │   │   ├── DuplicateParameterException.cs
    │   │   │   ├── DynamicExpressoException.cs
    │   │   │   ├── NoApplicableMethodException.cs
    │   │   │   ├── ParseException.cs
    │   │   │   ├── ReflectionNotAllowedException.cs
    │   │   │   └── UnknownIdentifierException.cs
    │   │   ├── Identifier.cs
    │   │   ├── IdentifiersInfo.cs
    │   │   ├── Interpreter.cs
    │   │   ├── InterpreterOptions.cs
    │   │   ├── Lambda.cs
    │   │   ├── LanguageConstants.cs
    │   │   ├── Parameter.cs
    │   │   ├── ParserArguments.cs
    │   │   ├── Parsing
    │   │   │   ├── ParserConstants.cs
    │   │   │   ├── Parser.cs
    │   │   │   ├── ParserSettings.cs
    │   │   │   ├── ParseSignatures.cs
    │   │   │   ├── Token.cs
    │   │   │   └── TokenId.cs
    │   │   ├── ReferenceType.cs
    │   │   ├── Reflection
    │   │   │   └── ReflectionExtensions.cs
    │   │   ├── Resources
    │   │   │   ├── ErrorMessages.Designer.cs
    │   │   │   └── ErrorMessages.resx
    │   │   └── Visitors
    │   │       └── DisableReflectionVisitor.cs
    │   └── GlobalAssemblyInfo.cs
    └── test
        └── DynamicExpresso.UnitTest
            ├── CaseInsensitivePropertyTest.cs
            ├── CollectionHelperTests.cs
            ├── ConstructorTest.cs
            ├── DefaultOperatorTest.cs
            ├── DetectIdentifiersTest.cs
            ├── DynamicExpresso.UnitTest.csproj
            ├── DynamicTest.cs
            ├── EnumerableTest.cs
            ├── ExpressionTypeTest.cs
            ├── ExtensionsMethodsTest.cs
            ├── FunctionTest.cs
            ├── GenerateDelegatesTest.cs
            ├── GenerateLambdaTest.cs
            ├── GithubIssues.cs
            ├── IdentifiersTest.cs
            ├── InvalidExpressionTest.cs
            ├── LambdaExpressionTest.cs
            ├── LiteralsTest.cs
            ├── MemberInvocationTest.cs
            ├── NullableTest.cs
            ├── OperatorsTest.cs
            ├── OtherTests.cs
            ├── ParametersTest.cs
            ├── PerformanceTest.cs
            ├── ReferencedTypesPropertyTest.cs
            ├── StaticTest.cs
            ├── TypesTest.cs
            ├── VariablesTest.cs
            ├── VisitorsTest.cs
            └── WorkingContextTest.cs

25 directories, 95 files

标签:

实例下载地址

DynamicExpresso:C# 表达式解释器

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警