使用 MethodInfo 调用带参数的方法
参考来自链接 https://www.cnblogs.com/CodingHiding/articles/3328362.html
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using System.Reflection;namespace WindowsFormsApplication1
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){Excute_code_1();}private void Excute_code_1(){CSharpCodeProvider objCSharpCodePrivoder = new CSharpCodeProvider();ICodeCompiler objICodeCompiler = objCSharpCodePrivoder.CreateCompiler();CompilerParameters objCompilerParameters = new CompilerParameters();//添加需要引用的dllobjCompilerParameters.ReferencedAssemblies.Add("System.dll");objCompilerParameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");//是否生成可执行文件objCompilerParameters.GenerateExecutable = false;//是否生成在内存中objCompilerParameters.GenerateInMemory = true;//编译代码CompilerResults cr = objICodeCompiler.CompileAssemblyFromSource(objCompilerParameters, textBox1.Text);if (cr.Errors.HasErrors){var msg = string.Join(Environment.NewLine, cr.Errors.Cast<CompilerError>().Select(err => err.ErrorText));MessageBox.Show(msg, "编译错误1");var msg1 = string.Join(Environment.NewLine, cr.Errors.Cast<CompilerError>().Select(err => err.ErrorNumber));MessageBox.Show(msg1, "编译错误2");var msg2 = string.Join(Environment.NewLine, cr.Errors.Cast<CompilerError>().Select(err => err.Line));MessageBox.Show(msg2, "编译错误3");}else{Assembly objAssembly = cr.CompiledAssembly;object objHelloWorld = objAssembly.CreateInstance("Test");if (objHelloWorld == null){Console.WriteLine("Instance Test is null!");return;}MethodInfo objMI = objHelloWorld.GetType().GetMethod("method_3");if (objMI == null){Console.WriteLine("the method_3 method of Instance Test can not be invoked!");return;}object[] l_args = new object[2] { 1, 2 };MessageBox.Show(objMI.Invoke(objHelloWorld, l_args).ToString());//MessageBox.Show(objMI.Invoke(objHelloWorld, new object[]{1,2}).ToString());}}private void Form1_Load(object sender, EventArgs e){init_code_1();}private void init_code_1(){textBox1.Clear();textBox1.AppendText("using System.Windows.Forms;\r\n");textBox1.AppendText("public class Test\r\n");textBox1.AppendText("{\r\n");textBox1.AppendText(" public int method_3(int a,int b)\r\n");textBox1.AppendText(" {\r\n");textBox1.AppendText(" return a + b; \r\n");textBox1.AppendText(" }\r\n");textBox1.AppendText("}\r\n");}}
}
使用 MethodInfo 调用带参数的方法相关推荐
- C#线程调用带参数的方法 ~
在 .NET Framework 2.0 版中,要实现线程调用带参数的方法有两种办法. 第一种:使用ParameterizedThreadStart. 调用 System.Threading.Thre ...
- java反射机制调用带参数的方法_Java反射机制:跟着代码学反射
1. 前言 在OOP的世界里,万物皆对象.也就是说,我们可以将任何东西抽象成一个对象. 比如人,可以抽象成一个Person类,通过new Person()来实例化一个对象:再比如鸭子,可以抽象成一个D ...
- C#线程调用带参数的方法,给控件赋值
System.Threading.Thread thread = new System.Threading.Thread(() => { //各种业务 //定义一个委托 public deleg ...
- Java 方法的概述-方法的定义-带参数的方法
方法概述 方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集1.方法必须先创建才可以使用,该过程成为方法定义 2.方法创建后并不是直接可以运行的,需要手动使用后才执 ...
- JS调用后台带参数的方法
JS调用后台带参数的方法 对于前台调用后台的方法,我们想到最多的就是用AJAX,这个是毋庸置疑的, 我就不再这里多说了.我今天主要想说的是用JS调用后台的方法. 对于后台往前台传值,用这种<%= ...
- 带参数的方法;导入包
一.带参数的方法 1.语法: <访问修饰符>放回值类型<方法名><(形式方法列表)>{ //方法的主体 } 2.调用带参方法 语法:对象名.方法名(参数1,参数2. ...
- ASP调用带参数存储过程的几种方式
最近有很多的朋友问到调用存储过程的问题,这里简单介绍几种ASP调用带参数存储过程的方法. 1. 这也是最简单的方法,两个输入参数,无返回值: set connection = server.creat ...
- Java基础知识之方法的通用格式、注意事项与带参数的方法
文章目录 一.方法调用过程 二.带参数的方法 三.方法的通用格式 一.方法调用过程 1.方法定义 public static void 方法名(){//方法体 } 2.方法调用过程 图片:@黑马程序员 ...
- linux的 定时器传参数,JavaScript 定时器调用传递参数的方法
JavaScript定时器调用传递参数的方法,需要的朋友可以参考下. 无论是window.setTimeout 还是window.setInterval,在使用函数名作为调用句柄时都不能带参数,而在许 ...
最新文章
- 简单明了!OLTP场景下的数据分布式设计原则
- 怎么用计算机拟合数据,数据拟合的几个应用实例-毕业论文.doc
- 草稿pyqt控件简单了解
- 「代码随想录」343. 整数拆分【动态规划】详解!
- apache SSL配置
- mysql的优化_第十一篇(查询计划篇)
- asp.net core 返回的Server Kestrel是什么
- MySQL -- 行转列 -- GROUP_CONCAT -- MAX(CASE WHEN THEN)
- uni —app 录音_uniapp如何实现录音功能
- Matlab吴恩达机器学习编程练习ex5:正则化线性回归和偏差v.s. 方差Regularized Linear Regression and Bias v.s. Variance
- 服务器的日常维护需要做什么?
- python内置函数可以返回列表、元组_Python内置函数_________可以返回列表、元组、字典、集合、字符串以及range对象中元素个数。...
- 学python重点是什么_如果只有1小时学Python,看这篇就够了
- 周礼键君:中国福建省建瓯市之《闽郡八音字典》修订版
- 全倒装超微间距COB(COB微间距)显示主导新型显示技术。
- java基础(个人笔记)
- HTML5 新的Input类型
- Qt:QTableView(01) 的用法
- 《Long Short-Term Memory》翻译,Sepp Hochreiter, ¨urgen Schmidhuber.1997,9(8):1735-1780
- 417. 太平洋大西洋水流问题(DFS)
热门文章
- 金庸笔下的“程序员”
- 新能源行业雨水除铊,污水中铊超标的解决方法
- Mysql查看执行计划
- ItemDataBound的用法
- 大话:边缘计算、雾计算、云计算 1
- Multipass,多平台本地轻量级Linux体验!
- 有了SonarPen压感绘图笔,接上耳机孔就可支持iPad
- php函数向上取整,php向上取整用什么函数
- (libgdx学习)ScrollPane(使用ScrollPane来创建一个横向滚动条)
- teamviewer锁定计算机密码,Team Viewer设置固定密码远程访问控制,不使用随机密码...