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

个人网站建站的流程做网站一定要会ps么

个人网站建站的流程,做网站一定要会ps么,北京网站设计与制作,wordpress容易被收录吗反射允许我们在运行时获取对象的相关信息#xff0c;创建对象的实例#xff0c;执行方法。Emit是作为反射的一个比较高级的功能。使用Emit#xff0c;可以从零开始动态的创建程序集及类。提供程序的灵活性。本文主要介绍.NET Core中Emit的使用。 1、程序集(Assembly) 程序…反射允许我们在运行时获取对象的相关信息创建对象的实例执行方法。Emit是作为反射的一个比较高级的功能。使用Emit可以从零开始动态的创建程序集及类。提供程序的灵活性。本文主要介绍.NET Core中Emit的使用。 1、程序集(Assembly) 程序集构成了 .NET 应用程序的部署、版本控制、重用、激活范围和安全权限的基本单元。 程序集是为协同工作而生成的类型和资源的集合这些类型和资源构成了一个逻辑功能单元。 程序集采用可执行文件 (.exe) 或动态链接库文件 (.dll) 的形式是 .NET 应用程序的构建基块 。 它们向公共语言运行时提供了注意类型实现代码所需的信息。在 .NET 和 .NET Framework 中可从一个或多个源代码文件生成程序集。 在 .NET Framework 中程序集可以包含一个或多个模块。使用System.Reflection.Emit可以动态创建程序集。 2、模块Module 模块是程序集内代码的逻辑集合每个模块可以使用不同的语言编写大多数情况下一个程序集包含一个模块。程序集包括了代码、版本信息、元数据等。模块是没有 Assembly 清单的 Microsoft 中间语言MSIL文件。 3、Emit的使用 Emit可以使用MSIL指令动态编写程序逻辑然后将指令编译成程序集。通过编写代码的方式动态创建程序。比如软件授权可以输入授权信息后生成一个授权的DLL使用Emit实现动态AOP框架等。 1.NET Framework中使用Emit using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1 {class Program{static void Main(string[] args){CreateAssembly();LoadAssembly();Console.ReadKey();}public static void LoadAssembly(){var ass AppDomain.CurrentDomain.Load(MyAssembly);var m ass.GetModule(MyModule);var ts m.GetTypes();var t ts.FirstOrDefault();if (t ! null){object obj Activator.CreateInstance(t);var me t.GetMethod(MyMethod);me.Invoke(obj, null);}}public static void CreateAssembly(){//定义一个程序集的名称var asmName new AssemblyName(MyAssembly);//首先就需要定义一个程序集var defAssembly AppDomain.CurrentDomain.DefineDynamicAssembly(asmName, AssemblyBuilderAccess.RunAndSave);//定义一个构建类var defModuleBuilder defAssembly.DefineDynamicModule(MyModule, MyAssembly.dll);//定义一个类var defClassBuilder defModuleBuilder.DefineType(MyClass, TypeAttributes.Public);//定义一个方法var defMethodBuilder defClassBuilder.DefineMethod(MyMethod,MethodAttributes.Public,null,//返回类型null//参数类型);//获取IL生成器var il defMethodBuilder.GetILGenerator();//定义一个字符串il.Emit(OpCodes.Ldstr, 生成的第一个程序);//调用一个函数il.Emit(OpCodes.Call, typeof(Console).GetMethod(WriteLine, new Type[] { typeof(string) }));//返回到方法开始返回il.Emit(OpCodes.Ret);//创建类型defClassBuilder.CreateType();//保存程序集defAssembly.Save(MyAssembly.dll);}} } 2.NET Core中使用Emit using System; using System.Reflection; using System.Reflection.Emit; namespace ConsoleApp2 {class Program{public static void Main(){AssemblyName aName new AssemblyName(ChefDynamicAssembly);AssemblyBuilder ab AssemblyBuilder.DefineDynamicAssembly(aName,AssemblyBuilderAccess.Run);ModuleBuilder mb ab.DefineDynamicModule(aName.Name .dll);TypeBuilder tb mb.DefineType(Commander);var attrs MethodAttributes.Public;// 使用类型构建器创建一个方法构建器MethodBuilder methodBuilder tb.DefineMethod(Do, attrs, typeof(string), Type.EmptyTypes);// 通过方法构建器获取一个MSIL生成器var IL methodBuilder.GetILGenerator();// 开始编写方法的执行逻辑// var store new string[3];var store IL.DeclareLocal(typeof(string[]));IL.Emit(OpCodes.Ldc_I4, 3);IL.Emit(OpCodes.Newarr, typeof(string));IL.Emit(OpCodes.Stloc, store);//store[0] CIL.Emit(OpCodes.Ldloc, store);IL.Emit(OpCodes.Ldc_I4, 0);IL.Emit(OpCodes.Ldstr, C);IL.Emit(OpCodes.Stelem, typeof(string));//store[1] JAVAIL.Emit(OpCodes.Ldloc, store);IL.Emit(OpCodes.Ldc_I4, 1);IL.Emit(OpCodes.Ldstr, JAVA);IL.Emit(OpCodes.Stelem, typeof(string));//store[2] PythonIL.Emit(OpCodes.Ldloc, store);IL.Emit(OpCodes.Ldc_I4, 2);IL.Emit(OpCodes.Ldstr, Python);IL.Emit(OpCodes.Stelem, typeof(string));// IChef chef new GoodChef();var chef IL.DeclareLocal(typeof(IChef));IL.Emit(OpCodes.Newobj, typeof(StoreChef).GetConstructor(Type.EmptyTypes));IL.Emit(OpCodes.Stloc, chef);//var dish chef.Cook(vegetables);var dish IL.DeclareLocal(typeof(string));IL.Emit(OpCodes.Ldloc, chef);IL.Emit(OpCodes.Ldloc, store);IL.Emit(OpCodes.Callvirt, typeof(IChef).GetMethod(Cook));IL.Emit(OpCodes.Stloc, dish);// return dish;IL.Emit(OpCodes.Ldloc, dish);IL.Emit(OpCodes.Ret);//方法结束// 从类型构建器中创建出类型var dynamicType tb.CreateType();// 通过反射创建出动态类型的实例var commander Activator.CreateInstance(dynamicType);Console.WriteLine(dynamicType.GetMethod(Do).Invoke(commander, null).ToString());Console.ReadLine();}}public interface IChef{string Cook(string[] store);}public class StoreChef : IChef{public string Cook(string[] store){return Value: string.Join(, store);}} }
http://www.zqtcl.cn/news/309354/

相关文章:

  • 青岛专业制作网站的公司吗百度咨询
  • 自定义网站模块深圳宝安区有什么好玩的地方
  • 如何增加网站的外链微平台网站支持html5实现游戏
  • 平台网站建设网站邯郸seo优化
  • 做网站着用什么软件盐城网站建设电话
  • 自己的网站wordpress自动变化文字
  • 北京制作网站公司哪家好wordpress小工具不显示不出来
  • 如何建设一个新的网站h5网站建设价格
  • 无锡专业做网站的怎么攻击php做的网站
  • 盐城网站建设代理商wordpress定义字体颜色
  • 成都旅游网站建设地址自己做的网站怎么被搜索出来
  • 网站建设免费免代码商城微网站如何做
  • 网站建设域名是什么东莞网络科技营销
  • 法语网站建设高端网站建设 骆
  • vue网站开发注意事项做设计想接外单去哪个网站好
  • 免费模板下载网站推荐苏州seo
  • 徐州市水利工程建设有限公司网站网站建设技术团队有多重要性
  • 合肥佰瑞网站搜索引擎优化步骤
  • 营销型网站建设亏1广西桂林天气预报15天
  • 想做一个网站平台怎么做公司网站建设费用估计
  • 电商网站开发平台pi netwo网页设计文件下载
  • 南平网站设计笔记本怎么建设网站
  • 舆情分析网站免费人工智能培训班收费标准
  • 青岛网站建设 大公司制作相册视频
  • 什么是网站的域名jquery素材网站
  • 课程网站建设ppt模板百度seo推广
  • 网站建设需要用到什么怎么在电脑上用手机app软件
  • 公司做网站有意义么网站认证必须做么
  • 网站虚拟空间更新缓存php外贸网站建设
  • 河南省建设执业资格注册中心网站门户定制网站建设公司