当前位置: 首页 > news >正文

网站违规关键词长沙房地产价格

网站违规关键词,长沙房地产价格,怎么讲解网站,24小时有效地址域名基于 Roslyn 实现一个简单的条件解析引擎Intro最近在做一个勋章的服务#xff0c;我们想定义一些勋章的获取条件#xff0c;满足条件之后就给用户颁发一个勋章#xff0c;定义条件的时候会定义需要哪些参数#xff0c;参数的类型#xff0c;获取勋章的时候会提供所需要的参… 基于 Roslyn 实现一个简单的条件解析引擎Intro最近在做一个勋章的服务我们想定义一些勋章的获取条件满足条件之后就给用户颁发一个勋章定义条件的时候会定义需要哪些参数参数的类型获取勋章的时候会提供所需要的参数有一些内置的参数内置的参数解析器(ParamResolver)。最后基于 Roslyn 的 Script 动态编译功能实现了一个简单的条件解析引擎。Condition Eval Demo条件解析示例[Fact] public async Task EvalTest() {var condition xy 10;var variables JsonConvert.SerializeObject(new[]{new{Name x,Type int},new{Name y,Type int},});var params1 new Dictionarystring, object(){{ x, 2 },{ y, 3 }};Assert.False(await ScriptEngine.EvalAsync(condition, variables, params1));var params1_1 JsonConvert.SerializeObject(params1);Assert.False(await ScriptEngine.EvalAsync(condition, variables, params1_1));var params2 new{x 6,y 5};Assert.True(await ScriptEngine.EvalAsync(condition, variables, params2)); } [Fact] public async Task EvalStringTest() {var condition x y.Length;var variables JsonConvert.SerializeObject(new[]{new{Name x,Type int},new{Name y,Type string},});var params1 new{x 1,y 3};Assert.False(await ScriptEngine.EvalAsync(condition, variables, params1));var params2 new{x 6,y 5211};Assert.True(await ScriptEngine.EvalAsync(condition, variables, params2)); } [Fact] public async Task EvalLinqTest() {var condition list.Any(xx10);var variables JsonConvert.SerializeObject(new[]{new{Name list,Type Listint}});var params1 new{list new Listint(){1,2,3,4,5}};Assert.False(await ScriptEngine.EvalAsync(condition, variables, params1));var params2 new{list new Listint(){1,2,3,4,5,10,12}};Assert.True(await ScriptEngine.EvalAsync(condition, variables, params2)); } 实现原理实现的方式是基于 Roslyn 实现的核心实现是基于 Roslyn 的 Script 实现的但是 Roslyn Script 的执行有一些限制不支持匿名类对象的解析因此还基于 Roslyn 运行时根据变量信息来动态生成一个类型用于执行脚本解析var result await CSharpScript.EvaluateAsyncbool(1 2); 运行时动态生成代码在之前的 DbTool 项目中介绍过介绍文章 基于 Roslyn 实现动态编译详细实现细节可以参考代码 https://github.com/WeihanLi/SamplesInPractice/tree/master/ScriptEngineMemo程序集加载在 framework 和 core 环境下的差异实现的时候我们的项目有 dotnetcore 的还有 netframework 的这两者加载 dll 的时候略有不同实现的时候用了一个条件编译在 dotnet core 环境下和 dotnet framework 分开处理在 dotnetcore 中使用 AssemblyLoadContext 来加载程序集#if NETCOREAPPvar assembly AssemblyLoadContext.Default.LoadFromAssemblyPath(dllPath); #elsevar assembly Assembly.LoadFile(dllPath); #endif 程序集要保存到文件原本打算动态生成的程序集保存的一个 Stream 不保存文件但是实际测试下来必须要保存到文件才可以所以在项目根目录下创建了一个临时目录 temp 用来保存动态生成的程序集Roslyn 动态生成的程序集管理目前还是比较简单的放在一个 temp 目录下了总觉得每一个类型生成一个程序集有些浪费但是好像也没办法修改已有程序集还没找到比较好的解决方案如果有好的处理方式欢迎一起交流MoreNatasha 是一个基于 Roslyn 来实现动态编译能够让你更方便进行动态操作有动态编译相关需求的可以关注一下这个项目后面也想用 Natasha 来优化前面提到的问题基于roslyn的动态编译库为您提供高效率、高性能、可追踪的动态构建方案兼容stanadard2.0, 只需原生C#语法不用Emit。让您的动态方法更加容易编写、跟踪、维护Referencehttps://github.com/WeihanLi/SamplesInPractice/tree/master/ScriptEnginehttps://github.com/dotnet/roslyn/wiki/Scripting-API-Sampleshttps://github.com/dotnetcore/Natasha
http://www.sadfv.cn/news/36517/

相关文章:

  • 宜昌企业网站建设哈尔滨网站开发方案
  • 手机网站快速建站有关网站建设合同
  • 哪个网站做黑色星期五订酒店活动东莞千寻电子科技有限公司
  • c2c网站建设策划书福州网站建设出格网络
  • 玉泉路做网站wordpress 数据库填写
  • 做网站快速排名公司注册核名查询官网
  • 大连企业招聘网站河北网络公司招聘
  • 北京如何建设网站淘客推广怎么样
  • 做化工的外贸网站都有什么如何申请免费域名做网站
  • 手机网站微信支付接口开发教程私人找人做网站
  • 网站规划与网页设计第四版电子书wordpress手机站模板
  • 故乡网站开发的意义Wordpress需要费用吗
  • ps怎么做网站淘宝入驻网站建设
  • 内网建设网站网站二级域名建站属于子站吗
  • 个人网站建设模板简洁图片sem优化托管
  • 南京装饰公司网站建设做电影平台网站怎么赚钱的
  • 湛江做网站从做微信文章的网站
  • 网络舆情监测 toom优化网站 提高查询
  • 建设银行网站维护电话乐清网站建设公司
  • 优秀网站设计参考wordpress 大气模板下载
  • 潍坊网站开发招聘信息页面设计公司招聘
  • 芜湖北京网站建设个人创业众筹平台
  • 中国建设企业网站wordpress network
  • 合肥有多少做网站的搜索指数的数据来源
  • 自适应影视网站模板idc网站备案
  • 中英文网站开发公司站长网站统计
  • 网站建设需要考虑的问题萝岗区网站建设推广
  • 免费做问卷的网站好网站建设沈阳公司哪家好
  • 国内公司网站需要备案手机活动网站模板
  • 哪家公司网站做的好重庆网站建站一站式服务