码迷,mamicode.com
首页 > 其他好文 > 详细

反射发出

时间:2014-10-13 11:36:49      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   color   使用   文件   数据   sp   div   

反射用来获取程序集及其相关信息。

反射发出是在运行时动态构造元数据和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);

        }

 

反射发出

标签:des   style   blog   color   使用   文件   数据   sp   div   

原文地址:http://www.cnblogs.com/nessie/p/3980816.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!