【资料图】
enable
时,自动生效.使用迁移: builder.GetDelegateFromShortName() 更改为 builder.GetAssembly().GetDelegateFromShortName();builder.GetAssembly() 仍然不可多次编译, 请及时缓存结果.
internal class Program { static void Main(string[] args) { //准备工作 NatashaManagement.Preheating(); AssemblyCSharpBuilder builder = new(); builder.Domain = DomainManagement.Random(); //填充一个 builder.AddWithDefaultUsing("public class A { }"); //此 API 可以在不用编译的情况下获取到已经格式化好的语法树. //注: GetAssembly 方法中已包括此方法, 但不会重复运行. builder.GetAvailableCompilation(); var assemblyA = builder.GetAssembly(); ShowAssemblyInfo(assemblyA); ShowSyntaxTree(builder.Compilation!); //清除编译信息,使 builder 可以重新组合 编译信息. builder.ClearCompilationCache(); //重置程序集名,以免编译时产生冲突. builder.WithRandomAssenblyName(); //向 builder 中追加类型 B. builder.AddWithDefaultUsing("public static class B{ public static void Show(){ Console.WriteLine(\"HelloWorld!\"); } }"); var assemblyAB = builder.GetAssembly(); ShowAssemblyInfo(assemblyAB); ShowSyntaxTree(builder.Compilation!); //反射方法并生成委托 var action = assemblyAB.GetDelegateFromShortName("B", "Show"); Console.WriteLine("运行方法:"); action(); //action.DisposeDomain(); //Console.WriteLine(DomainManagement.IsDeleted(builder.Domain!.Name!)); Console.ReadKey(); static void ShowAssemblyInfo(Assembly assembly) { Console.WriteLine("此程序集名字:"+assembly.FullName); Console.WriteLine("此程序集是否为动态程序集:" + (assembly.IsDynamic ? "是" : "否")); Console.WriteLine("编译后的程序集中类的数量:" + assembly.GetTypes().Length); Console.WriteLine("程序集中的类分别是:" + string.Join(",", assembly.GetTypes().Select(item => item.Name))); } static void ShowSyntaxTree(Compilation compilation) { Console.WriteLine("---------------------------"); foreach (var item in compilation.SyntaxTrees) { Console.WriteLine("脚本代码:"); Console.WriteLine(item.ToString()); } Console.WriteLine("---------------------------"); } } }
结果如下:
此程序集名字:9a7962dc0b004c2481d615c5e044c6df, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null此程序集是否为动态程序集:否编译后的程序集中类的数量:3程序集中的类分别是:EmbeddedAttribute,RefSafetyRulesAttribute,A-----------脚本代码-----------public class A{}-----------------------------此程序集名字:a17ce8ef9c164e558facf13425b279c6, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null此程序集是否为动态程序集:否编译后的程序集中类的数量:4程序集中的类分别是:EmbeddedAttribute,RefSafetyRulesAttribute,A,B-----------脚本代码-----------public class A{}using System;public static class B{ public static void Show() { Console.WriteLine("HelloWorld!"); }}-----------------------------运行方法:HelloWorld!
关键词:
当前热议!Natasha V5.2.2.1 正式发布.
三六五网(300295):该股换手率大于8%(04-26)|世界今头条
天气、交通、出游、健康……北京最全五一提示,一文汇总-环球信息
【天天时快讯】水泥管规格表大全_水泥管规格表
焦点短讯!涨停雷达:一季报增长 常宝股份触及涨停
5G鸿蒙生态手机体验怎么样?Hi畅享60 5G首发测评带你揭开谜底! 全球新要闻
世界播报:杭州雅马哈电钢琴专卖店(YAMAHACLP785)
全球关注:思客琦业绩真实性遭深交所质询 申报前调减2019年利润
新农开发:您可以查看我公司公告《重大资产重组报告书》,已对该事项进行了详细说明
山西证券给予安路科技增持评级,扭亏为盈,FPGA新产品的批量销售将持续拉升公司业绩
2023五一天津滨海乐活节交响音乐会4月29日节目单
中南建设:休养生息|年报风云㊽|天天信息
热点评!五一好“趣”处丨“齐白石的艺术世界”临摹比赛活动等你来参与
体育早餐4.26|CBA半决赛浙江1-0深圳 北京国安1-3青岛海牛3轮不胜
天天快看:5年开万店 “便宜”的锅圈冲刺IPO
天天视点!阿石创单季营收创历史新高,首次突破2亿元!下游景气度复苏,业绩反弹一触即发
万圣节电影动画片_万圣节电影动画
“永乐年制”款“甜白釉”大碗
tim是什么文件_tim是什么
刺激,1-0西甲第8爆发,10人作战,掀翻马竞的绊脚石,取2连胜
牡丹鹦鹉怎么养幼鸟视频_牡丹鹦鹉怎么养
4月25日基金净值:兴全合丰三年持有混合最新净值0.7287,跌1.15%_天天播报
【甜心选择2/HS2】小花整合+全DLC+全插件汉化+多种大小
企业工商年检需要什么材料_企业工商年检怎么办理_动态
一颗土豆融入长三角 “中国薯都”再扩朋友圈
2022年菲律宾数字经济规模突破2万亿比索
1000kw柴油发电机组技术参数_1000kw柴油发电机价格
花呗如何关闭 ,图文教程轻松学,觉得有用请转给家人朋友
全球百事通!穿针乞巧游戏规则_穿针乞巧
最资讯丨女生的英文名字叫什么好听_女生的英文
精彩看点:河北省一季度生产总值同比增长5.1%,第二产业增长5.5%
四川承世电子商务欺骗消费 全球微头条
北京地区已成功发行基础设施REITs项目7单
环球热头条丨2023乌鲁木齐石化分公司高校毕业生春季招聘公告
环球最资讯丨很多小时候爱问为什么的小孩子越长越平庸,为什么?
忻州光伏产业园区项目1号厂房钢结构“首吊”成功 全球最新
相关新闻