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相关推荐

  1. TVM apps extension示例扩展库

    TVM apps extension示例扩展库 此文件夹包含TVM的示例扩展库.演示了其它库如何在C++和Python API中扩展TVM. 该库扩展了TVM的功能. python模块加载新的共享库, ...

  2. ios share extension 真机不显示_ios企业签名:APPGroups实现App之间数据共享

    一.认识App Groups AppGroup allows data sharing between two different apps or even app and widgets by cr ...

  3. 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 ...

  4. 解决 The mysql extension is deprecated and will be r

    为什么80%的码农都做不了架构师?>>>    解决 The mysql extension is deprecated and will be removed in the fut ...

  5. Chrome Restful Api 测试工具 Postman-REST-Client离线安装包下载,Axure RP Extension for Chrome离线版下载...

    [Postman for Chrome 离线下载] Postman-REST-Client离线安装包,可直接在Chrome浏览器本地安装使用,可模拟各种http请求,Restful Api测试, CS ...

  6. Chrome Extension 检查视图(无效)处理方法

    最近闲来无事,简单看了下Chrome扩展的开发,并且开发一个小小的翻译插件(TranslateBao)作为练手,开发细节不详述了,如果有新学习chrome extension开发的新人,可以参考源码, ...

  7. running build_ext building ‘gensim.models.word2vec_inner‘ extension error: Microsoft Visua

    running build_ext     building 'gensim.models.word2vec_inner' extension     error: Microsoft Visual ...

  8. struts2 no extension(excludePattern)

    采用struts2 小伙伴非常希望更改或删除action扩展,本文将帮助你实现 struts2-core-2.3.16.jar , 下载链接: http://repo1.maven.org/maven ...

  9. 解决chrome extension无法下载的问题

    由于GFW把谷歌应用商店给屏蔽了,下载chrome扩展变得很困难. 我使用的是版本30.0.1599.101 m. 那么你需要做的第一个处理是,修改host文件,保证chrome应用商店可以登录.如下 ...

  10. FSLib.Extension库

    FSLib.Extension库是一个用于.NET的扩展函数库,所提供的函数和方法均使用扩展方法引入,包含数以百计的用于日常编写程序时使用的扩展方法. http://www.fishlee.net/s ...

最新文章

  1. pytorch安装-Windows(pip install失败)
  2. professional asp.net 4 with c# and VB.net 阅读笔记
  3. 利用ida对程序的静态链接库进行处理
  4. MySQL--流程控制
  5. C/C++ 存储类型 作用域 连接类型
  6. Java-volatile是如何实现的
  7. nmcli管理网络 RHEL8和CentOS8怎么重启网络
  8. 零基础学python知乎-编程零基础应当如何开始学习 Python?
  9. html4与java混编,JavaWeb04-HTML篇笔记(四)
  10. esp-idf的内存管理——tlsf之上的封装
  11. 超级搜索术6-问题驱动/系统思维
  12. vs2010 正式版官方下载地址
  13. 英语阅读——The confusing pursuit of beauty
  14. 新建销售群开场语句_销售会议开场白台词
  15. 32位和64位CPU操作系统的区别
  16. 【码农说码】手撕锟斤拷,彻底搞懂GB2312,GBK,Big5,ASCII,UTF-8,UTF-32的前世今生
  17. 电商策略2----超卖、少卖
  18. CCNA WAN 帧中继
  19. 思科交换机等设备基本配置
  20. 只需+1s,GitHub代码一键转成VS Code

热门文章

  1. 独家专访 | “共同基金之父”纽伯格的公司(NeubergerBerman)要在中国做什么?
  2. 云原生的What、Why、How | 凌云时刻
  3. 【数据预测】基于matlab鸟群算法优化BP神经网络数据预测【含Matlab源码 1772期】
  4. 【单目标优化求解】基于matlab混沌生物地理算法求解单目标问题【含Matlab源码 1411期】
  5. 【TSP】基于matlab遗传算法求解旅行商问题【含Matlab源码 1337期】
  6. 【雷达通信】基于matlab联邦滤波算法惯性+GPS+地磁组合导航仿真【含Matlab源码 1276期】
  7. 【TWVRP】基于matlab遗传算法求解送货且带时间窗的车辆路径规划问题【含Matlab源码 1074期】
  8. 【语音去噪】基于matlab GUI LMS+RLS语音去噪【含Matlab源码 528期】
  9. 【TSP】基于matlab蚁群算法求解旅行商问题【含Matlab源码 398期】
  10. 【基础教程】基于matlab疫情防护动图制作【含Matlab源码 028期】