MonoCSharp Evaluator Extension
Mono.CSharp.Evaluator提供了方便的动态编译功能,但默认的Compile方法,
只支持无参的方法,如:
Mono.CSharp.Evaluator evaluator = new Mono.CSharp.Evaluator(new Mono.CSharp.CompilerSettings(), new Mono.CSharp.Report(new ConsoleReportPrinter()));var method = evaluator.Compile("System.Console.WriteLine(\"dynamic compiled\");");// or with return value.method = evaluator.Compile("new System.DateTime();");object value = null;method(ref value);
其实,要支持带参数的方法也很容易,使用Lambda表达式轻松实现:
evaluator.ReferenceAssembly(typeof(Form1).Assembly);var action = (System.Action<WindowsFormsApplication1.Form1, object>)evaluator.Evaluate("new System.Action<WindowsFormsApplication1.Form1, object>((instance, value) => { instance.Test(value); });");action(this, "test8");
于是,本人写了个EvaluatorExtension将这样的代码简化一下:
var action = evaluator.Compile<Action<Form1, object>>("(instance, value) => { instance.Test(value); }");action(this, "test12");// or with return valuevar func = evaluator.Compile<Func<Form1, object, string>>("(instance, value) => { instance.Test(value); return (string)value; }");string value = func(this, "test13");
或者,使用参数的方法定义“参数名”:
var action = evaluator.Compile<Action<Form1, object>>(new[] { "instance", "value" }, "instance.Test(value);");
Mono.CSharp.dll 下载: Mono.CSharp.dll
MonoCSharp Evaluator Extension相关推荐
- TVM apps extension示例扩展库
TVM apps extension示例扩展库 此文件夹包含TVM的示例扩展库.演示了其它库如何在C++和Python API中扩展TVM. 该库扩展了TVM的功能. python模块加载新的共享库, ...
- ios share extension 真机不显示_ios企业签名:APPGroups实现App之间数据共享
一.认识App Groups AppGroup allows data sharing between two different apps or even app and widgets by cr ...
- php解决 mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysq
微信小程序开发交流qq群 173683895 承接微信小程序开发.扫码加微信. The mysql extension is deprecated and will be removed i ...
- 解决 The mysql extension is deprecated and will be r
为什么80%的码农都做不了架构师?>>> 解决 The mysql extension is deprecated and will be removed in the fut ...
- Chrome Restful Api 测试工具 Postman-REST-Client离线安装包下载,Axure RP Extension for Chrome离线版下载...
[Postman for Chrome 离线下载] Postman-REST-Client离线安装包,可直接在Chrome浏览器本地安装使用,可模拟各种http请求,Restful Api测试, CS ...
- Chrome Extension 检查视图(无效)处理方法
最近闲来无事,简单看了下Chrome扩展的开发,并且开发一个小小的翻译插件(TranslateBao)作为练手,开发细节不详述了,如果有新学习chrome extension开发的新人,可以参考源码, ...
- running build_ext building ‘gensim.models.word2vec_inner‘ extension error: Microsoft Visua
running build_ext building 'gensim.models.word2vec_inner' extension error: Microsoft Visual ...
- struts2 no extension(excludePattern)
采用struts2 小伙伴非常希望更改或删除action扩展,本文将帮助你实现 struts2-core-2.3.16.jar , 下载链接: http://repo1.maven.org/maven ...
- 解决chrome extension无法下载的问题
由于GFW把谷歌应用商店给屏蔽了,下载chrome扩展变得很困难. 我使用的是版本30.0.1599.101 m. 那么你需要做的第一个处理是,修改host文件,保证chrome应用商店可以登录.如下 ...
- FSLib.Extension库
FSLib.Extension库是一个用于.NET的扩展函数库,所提供的函数和方法均使用扩展方法引入,包含数以百计的用于日常编写程序时使用的扩展方法. http://www.fishlee.net/s ...
最新文章
- pytorch安装-Windows(pip install失败)
- professional asp.net 4 with c# and VB.net 阅读笔记
- 利用ida对程序的静态链接库进行处理
- MySQL--流程控制
- C/C++ 存储类型 作用域 连接类型
- Java-volatile是如何实现的
- nmcli管理网络 RHEL8和CentOS8怎么重启网络
- 零基础学python知乎-编程零基础应当如何开始学习 Python?
- html4与java混编,JavaWeb04-HTML篇笔记(四)
- esp-idf的内存管理——tlsf之上的封装
- 超级搜索术6-问题驱动/系统思维
- vs2010 正式版官方下载地址
- 英语阅读——The confusing pursuit of beauty
- 新建销售群开场语句_销售会议开场白台词
- 32位和64位CPU操作系统的区别
- 【码农说码】手撕锟斤拷,彻底搞懂GB2312,GBK,Big5,ASCII,UTF-8,UTF-32的前世今生
- 电商策略2----超卖、少卖
- CCNA WAN 帧中继
- 思科交换机等设备基本配置
- 只需+1s,GitHub代码一键转成VS Code
热门文章
- 独家专访 | “共同基金之父”纽伯格的公司(NeubergerBerman)要在中国做什么?
- 云原生的What、Why、How | 凌云时刻
- 【数据预测】基于matlab鸟群算法优化BP神经网络数据预测【含Matlab源码 1772期】
- 【单目标优化求解】基于matlab混沌生物地理算法求解单目标问题【含Matlab源码 1411期】
- 【TSP】基于matlab遗传算法求解旅行商问题【含Matlab源码 1337期】
- 【雷达通信】基于matlab联邦滤波算法惯性+GPS+地磁组合导航仿真【含Matlab源码 1276期】
- 【TWVRP】基于matlab遗传算法求解送货且带时间窗的车辆路径规划问题【含Matlab源码 1074期】
- 【语音去噪】基于matlab GUI LMS+RLS语音去噪【含Matlab源码 528期】
- 【TSP】基于matlab蚁群算法求解旅行商问题【含Matlab源码 398期】
- 【基础教程】基于matlab疫情防护动图制作【含Matlab源码 028期】