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

昆明航空公司官方网站免费网站模板psd

昆明航空公司官方网站,免费网站模板psd,上海市网站建设公司58,东营网站建设教程前言 反射使用#xff0c;让我们的程序可以动态增加一些功能#xff0c;让原本固化的步骤逻辑变得动态#xff0c;这是它的优点。当然使用反射首次加载会有性能损耗以及使用复杂#xff1b;但是现在大家都在讲动态#xff0c;使用好它应该是一个重要的编程理念提升。MVC、…前言 反射使用让我们的程序可以动态增加一些功能让原本固化的步骤逻辑变得动态这是它的优点。当然使用反射首次加载会有性能损耗以及使用复杂但是现在大家都在讲动态使用好它应该是一个重要的编程理念提升。MVC、ORM、IOC、AOPA都有使用这个东西了。如果要考虑性能可以考虑缓存程序集我们保证程序只加载一次就好。 一、直接利用反射读写对象的值 static void Main(string[] args){Person p new Person() { Name 丁竹, Age 26, Sex true };p.Working(readinof);//利用反射读取值object obj p;var type obj.GetType();foreach (var item in type.GetProperties()){string value item.GetValue(obj, null).ToString();Console.WriteLine(${item.Name} {value});}Assembly ass Assembly.Load(ReadInfo);object pObj ass.CreateInstance(ReadInfo.Person);//利用反射设置值{System.Reflection.PropertyInfo propertyInfo type.GetProperty(Name);propertyInfo.SetValue(obj, ding, null);}Console.Read();} 二、通过反射调用实例 static void Main(string[] args){//[1].CsharpCodePrivode//提供对C#代码生成器和代码编译器的实例的访问。如果要动态生成VB代码可以使用VBCodeProvider.//CreateCompiler():获取编译器的实例CSharpCodeProvider objcsharpcodeprivoder new CSharpCodeProvider();//[2].ICodeComplier//定义用于调用源代码编译的接口或使用指定编译器的CodeDOM树。//每种编译方法都接受编译器的ComplierParameter对象,并返回指示编译结果的CompilerResults对象ICodeCompiler codeCompiler objcsharpcodeprivoder.CreateCompiler();//[3].ComplierParameters 表示用于调用编译器的参数//ReferencedAssembies:获取当前项目所引用的程序集。Add方法为程序集添加引用//GenerateExecutable:获取或设置一个值该值指示是否生成可执行文件。若此属性为false,则生成Dll,默认是false.//GenerateInMemor获取或设置一个值该值指示是否在内存中生成输出。CompilerParameters objcompilerparameters new CompilerParameters();// objcompilerparameters.ReferencedAssemblies.Add(System.dll);objcompilerparameters.GenerateExecutable false;objcompilerparameters.GenerateInMemory true;//[4].CompilerResults 表示从编译器返回的编译结果//CompiedAssembly获取或设置以编译的程序集Assembly类型。CompilerResults cr codeCompiler.CompileAssemblyFromSource(objcompilerparameters, GenerateCode());if (cr.Errors.HasErrors){Console.WriteLine(编译错误);foreach (CompilerError item in cr.Errors){Console.WriteLine(item.ErrorText);}}else{//通过反馈调用HelloWorld实例Assembly assembly cr.CompiledAssembly;object objHelloWorld assembly.CreateInstance(DynamicCodeGenerate.HelloWorld);MethodInfo objMI objHelloWorld.GetType().GetMethod(OutPut);Console.WriteLine(objMI.Invoke(objHelloWorld,null));}Console.ReadLine();}static string GenerateCode(){StringBuilder sb new StringBuilder();sb.Append(using System;);sb.Append(Environment.NewLine);sb.Append(namespace DynamicCodeGenerate);sb.Append(Environment.NewLine);sb.Append({);sb.Append(Environment.NewLine);sb.Append( public class HelloWorld);sb.Append(Environment.NewLine);sb.Append( {);sb.Append(Environment.NewLine);sb.Append( public string OutPut());sb.Append(Environment.NewLine);sb.Append( {);sb.Append(Environment.NewLine);sb.Append( return \Hello world!\;);sb.Append(Environment.NewLine);sb.Append( });sb.Append(Environment.NewLine);sb.Append( });sb.Append(Environment.NewLine);sb.Append( });string code sb.ToString();Console.WriteLine(code);Console.WriteLine();return code;} 三、通过动态加载Dll生成实例 dom.DoCompileFile(Path.Combine(pathStr, filename), Test.dll);MySampleDomain AppDomain.CreateDomain(MySampleDomain);ass Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory Test.dll);obj MySampleDomain.CreateInstanceAndUnwrap(ass.FullName, Sample.Demo);四、通过反射调用方法 Type type obj.GetType();MethodInfo method type.GetMethod(Add);int aConvert.ToInt32( method.Invoke(obj, new object[] { 1,3 }));Console.WriteLine(a); 五、完整代码 public class ReflexHelp{public void Execute(string gencode){//[1].CsharpCodePrivode//提供对C#代码生成器和代码编译器的实例的访问。如果要动态生成VB代码可以使用VBCodeProvider.//CreateCompiler():获取编译器的实例CSharpCodeProvider objcsharpcodeprivoder new CSharpCodeProvider();//[2].ICodeComplier//定义用于调用源代码编译的接口或使用指定编译器的CodeDOM树。//每种编译方法都接受编译器的ComplierParameter对象,并返回指示编译结果的CompilerResults对象ICodeCompiler codeCompiler objcsharpcodeprivoder.CreateCompiler();//[3].ComplierParameters 表示用于调用编译器的参数//ReferencedAssembies:获取当前项目所引用的程序集。Add方法为程序集添加引用//GenerateExecutable:获取或设置一个值该值指示是否生成可执行文件。若此属性为false,则生成Dll,默认是false.//GenerateInMemor获取或设置一个值该值指示是否在内存中生成输出。CompilerParameters objcompilerparameters new CompilerParameters();// objcompilerparameters.ReferencedAssemblies.Add(System.dll);objcompilerparameters.GenerateExecutable false;objcompilerparameters.GenerateInMemory true;//[4].CompilerResults 表示从编译器返回的编译结果//CompiedAssembly获取或设置以编译的程序集Assembly类型。CompilerResults cr codeCompiler.CompileAssemblyFromSource(objcompilerparameters, gencode);if (cr.Errors.HasErrors){Console.WriteLine(编译错误);foreach (CompilerError item in cr.Errors){Console.WriteLine(item.ErrorText);}}else{//通过反馈调用HelloWorld实例Assembly assembly cr.CompiledAssembly;object objHelloWorld assembly.CreateInstance(DynamicCodeGenerate.HelloWorld);MethodInfo objMI objHelloWorld.GetType().GetMethod(OutPut);Console.WriteLine(objMI.Invoke(objHelloWorld, null));}}public object GenObject(string dllFileName, string typeName){Assembly ass Assembly.LoadFile(dllFileName);return ass.CreateInstance(typeName);}public int GetAddInfo(object obj, string methrName){Type type obj.GetType();MethodInfo method type.GetMethod(methrName);return Convert.ToInt32(method.Invoke(obj, new object[] { 1, 3 }));}/// summary/// 编译代码/// /summary/// param nameprovider编译器/param/// param namesourceFile源文件/param/// param namegentenFile生成文件名/param/// returns编译结果/returnspublic CompilerResults CompileCode(CodeDomProvider provider, string sourceFile, string gentenFile){string[] referenceAssemblies { System.dll };CompilerParameters cp new CompilerParameters(referenceAssemblies, gentenFile, false);cp.GenerateExecutable false;//设置是否要包含一个入口点CompilerResults cr provider.CompileAssemblyFromFile(cp, sourceFile);return cr;}}
http://www.w-s-a.com/news/877919/

相关文章:

  • 别人的做网站网页打不开图片
  • 北京专业网站设计推荐怎么建立网站网址
  • 上海网站建设开发公司哪家好网站数据搬家
  • 杭州建站平台哪里有免费的网站推广软件
  • 深圳极速网站建设服务什么网站可以做产品入驻
  • 淄博易宝网站建设app推广拉新公司
  • 营销型外贸网站建设软件备案域名出租
  • 网站域名禁止续费m99ww094cn 苍井空做的网站
  • 上海建设工程网站大同网站建设熊掌号
  • 设计类书籍网站江苏网站建设简介模板
  • 手机企业网站推广c 手机app开发
  • 网站建设需要多少天凡客建设网站稳定吗
  • 房天下网站建设女生说wap是什么意思
  • 网站开发安全机制北京做网站多少钱合理
  • 扁平化 公司网站建设大型视频网站需要的资金量
  • 免费建各种网站淄博网站建设yx718
  • 凡科网建站入门教程运城市网站建设
  • 黄浦区未成年人思想道德建设网站oa系统是什么
  • 微信里的网站怎么做电子商务网站开发平台
  • 易企秀网站怎么做轮播图网站建设张世勇
  • 网站备案幕布尺寸建立网页的几个步骤
  • pc网站页面找出网站所有死链接
  • 专业做seo的网站网站内连接
  • 阿里云网站开发服务器想开网站建设公司
  • 网站开发不足之处茶叶seo网站推广与优化方案
  • 响应式网站建设系统网站优化怎么做 有什么技巧
  • 班级网站做哪些方面wordpress标签 扩展
  • 如何在电商上购物网站Wordpress 域名授权插件
  • 网站建设后台怎么弄昆明如何做好关键词推广
  • 自己怎么做个网站优酷视频网站开发