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

山东网站推广营销设计做网络推广一个月的收入

山东网站推广营销设计,做网络推广一个月的收入,wordpress的轮播图,企业官网模板下载 简洁现代此篇将介绍C#如何在运行时动态调用方法。当某些类型是运行时动态确定时&#xff0c;编译时的静态编码是无法解决这些动态对象或类的方法调用的。此篇则给你一把利剑&#xff0c;让动态对象的方法调用成为可能。 1.动态调用dll里的方法: <span style"font-family:SimSun…

此篇将介绍C#如何在运行时动态调用方法。当某些类型是运行时动态确定时,编译时的静态编码是无法解决这些动态对象或类的方法调用的。此篇则给你一把利剑,让动态对象的方法调用成为可能。

1.动态调用dll里的方法:

 

<span style="font-family:SimSun;font-size:12px;">/// <summary>
/// 该类将被独立编入Class1.dll汇编
/// </summary>
class Class1
{public static string method1(){return "I am Static method (method1) in class1";}public string method2(){return "I am a Instance Method (method2) in Class1";}public string method3(string s){return "Hello " + s;}
}/// <summary>
/// 该类独立放入Test.exe汇编
/// </summary>
class DynamicInvoke
{public static void Main(string[] args){// 动态加载汇编string path = "Class1.dll";Assembly assembly = Assembly.Load(path);// 根据类型名得到TypeType type = assembly.GetType("Class1");// 1.根据方法名动态调用静态方法string str = (string)type.InvokeMember("method1", BindingFlags.Default | BindingFlags.InvokeMethod, null, null, new object[] { });Console.WriteLine(str);// 2.根据方法名动态调用动态对象的成员方法object o = Activator.CreateInstance(type);str = (string)type.InvokeMember("method2", BindingFlags.Default | BindingFlags.InvokeMethod, null, o, new object[] { });Console.WriteLine(str);// 3.根据方法名动态调用动态对象的有参成员方法object[] par = new object[] { "kunal" };str = (string)type.InvokeMember("method3", BindingFlags.Default | BindingFlags.InvokeMethod, null, o, par);Console.WriteLine(str);// 带out修饰的InvokeMember// System.Int32 中 public static bool TryParse(string s, out int result) 方法的调用var arguments = new object[] { str, null }; // 注意这里只能将参数写在外面,out参数为null也没有关系typeof(int).InvokeMember("TryParse", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Static,null, null, arguments);Console.WriteLine(arguments[1]);}
}</span>
View Code

 


2.动态加载类文件并调用方法: 

using System;
using System.CodeDom.Compiler;
using System.IO;
using System.Reflection;
using System.Threading;
using System.Windows.Forms;
using Microsoft.CSharp;namespace _32.DynamicReflection
{internal class Program{private static void Main(string[] args){#region 内置标签方法 (动态加载)const string className = "DynamicReflection.Test"; //类名称一定要全称string fileName = <strong>Thread.GetDomain().BaseDirectory + "Test.cs";</strong>if (File.Exists(fileName)){var sourceFile = new FileInfo(fileName);CodeDomProvider provider = new CSharpCodeProvider();var cp = new CompilerParameters();cp.ReferencedAssemblies.Add("System.dll"); //添加命名空间引用 
 cp.GenerateExecutable = false; // 生成类库cp.GenerateInMemory = true; // 保存到内存cp.TreatWarningsAsErrors = false; // 不将编译警告作为错误// 编译CompilerResults cr = provider.CompileAssemblyFromFile(cp, sourceFile.FullName);if (cr.Errors.Count < 1){Assembly asm = cr.CompiledAssembly; // 加载//1.调用静态方法Type type = asm.GetType(className);var str =(string)type.InvokeMember("SayHello1", BindingFlags.Default | BindingFlags.InvokeMethod, null, null, new object[] {});Console.WriteLine(str);//2.调用实例方法object instance = asm.CreateInstance(className);str =(string)type.InvokeMember("SayHello2", BindingFlags.Default | BindingFlags.InvokeMethod, null, instance,new object[] {});Console.WriteLine(str);//3.调用带参数的方法var par = new object[] {"zhangqs008"};str =(string)type.InvokeMember("SayHello3", BindingFlags.Default | BindingFlags.InvokeMethod, null, instance,par);Console.WriteLine(str);Console.Read();}else{string msg = null;for (int index = 0; index < cr.Errors.Count; index++){CompilerError error = cr.Errors[index];msg += "【错误" + (index + 1) + "" + Environment.NewLine;msg += "[文件] " + error.FileName + Environment.NewLine;msg += "[位置] 行" + error.Line + ",列" + error.Column + Environment.NewLine;msg += "[信息] " + error.ErrorText + Environment.NewLine;msg += Environment.NewLine;}MessageBox.Show(msg, "内置方法类编译错误");}}#endregion}}
}

 

 

 

 

 

类文件:

 

DynamicReflection
{public class Test{public static string SayHello1(){return "hello static method";}public string SayHello2(){return "hello instance method";}public string SayHello3(string args){return "hello args " + args;}}
}

 

转载于:https://www.cnblogs.com/blogs2014/p/10315864.html

http://www.lbrq.cn/news/2706877.html

相关文章:

  • 项目计划书范文关键词优化心得
  • ashx做网站网络营销优化培训
  • 怎样给网站做推广沈阳全网推广公司哪家好
  • 彩票网站建设方案企业如何网络推广
  • 东营网站建设电话全国疫情最新情况最新消息今天
  • 中建卓越建设有限公司网站首页磁力猫最好磁力搜索引擎
  • 手机网站开发周期seo泛目录培训
  • 网站系统名称是什么长沙推广引流
  • 男的和女的做那种短视频网站seo优化推广公司
  • 池州专业网站建设公司营销培训课程ppt
  • 乌鲁木齐网站设计要多少钱知名seo公司
  • dnf做汉堡怎么玩间网站百度seo优化及推广
  • 潍城区住房和城乡建设局网站网络营销七个步骤
  • java制作的网站专业软文
  • 网站开发app营销培训机构哪家最专业
  • 惠州网站开发公司重庆疫情最新消息
  • 织梦复制网站模板百度客服人工
  • 学校网站建设的作用如何搭建一个网站平台
  • 国家中职示范校建设专题网站佛山百度推广公司
  • 移动网站建站系统下载怎么做一个网站的步骤
  • 中国优秀企业网站优化精灵
  • 做一个网站加优化排名得多少钱软文素材网站
  • 学做烘焙的网站登录百度账号注册
  • 自适应产品网站模板网店推广方案范文
  • 太原网站制作最新招聘信息网络销售工作靠谱吗
  • 东莞企业网站费用小程序源码网
  • 我国市级网站建设分析模板长沙关键词优化公司电话
  • 玉环住房与城乡建设规划局网站成人电脑培训班办公软件
  • 有哪些开发网站公司营销推广平台
  • 谁做的12306网站关键词查询
  • 从 Notion 的水土不服到 Codes 的本土突围:研发管理工具的适性之道​
  • LeetCode215~ 234题解
  • 【MCP开发】Nodejs+Typescript+pnpm+Studio搭建Mcp服务
  • 【IntelliJ IDEA】如何在pom.xml中去除maven中未使用的依赖
  • [系统架构]系统架构基础知识(一)
  • 【论文笔记】DOC: Improving Long Story Coherence With Detailed Outline Control