首页 > 代码库 > 反射发出
反射发出
反射用来获取程序集及其相关信息。
反射发出是在运行时动态构造元数据和MSIL语言还可生产PE文件。
使用反射发出的步骤基本是固定的 ,用HELLO WORD 做开始
public void BuildeMthod() { //1.构建程序集 AppDomain myDomain = AppDomain.CurrentDomain; AssemblyName asmName = new AssemblyName(); asmName.Name = "MyDom"; AssemblyBuilder myAsmBuilder = myDomain.DefineDynamicAssembly( asmName, AssemblyBuilderAccess.RunAndSave); //模块和类型 ModuleBuilder myModule = myAsmBuilder.DefineDynamicModule("MyDom", "MyDom.dll"); //类型 TypeBuilder myTypeBld = myModule.DefineType("MyDomType", TypeAttributes.Public); //方法 MethodBuilder myMthdBld = myTypeBld.DefineMethod( "SampleC", MethodAttributes.Public | MethodAttributes.Static ); //生成MSIL语言 ILGenerator ILout = myMthdBld.GetILGenerator(); ILout.Emit(OpCodes.Nop); ILout.Emit(OpCodes.Ldstr, "Hello World!"); MethodInfo mi = typeof(System.Console).GetMethod("Write", new Type[] { typeof(string) }); ILout.Emit(OpCodes.Call,mi); ILout.Emit(OpCodes.Nop); ILout.Emit(OpCodes.Ret); Type myType = myTypeBld.CreateType(); myAsmBuilder.Save("MyDom.dll"); MethodInfo myMthdInfo = myType.GetMethod("SampleC"); myMthdInfo.Invoke(myType,null); }
反射发出
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。