下面是调用(注意调用时特殊字符的转义)
1 color coor = csharpcodevaluehelper<color>.getcodevalue("color.fromargb(100,100,100)");
2
3
4 image img = csharpcodevaluehelper<image>.getcodevalue("image.fromfile("c:\tu.jpg")");
代码如下
1 usingmicrosoft.csharp;
2 usingsystem.reflection;
3 using system.codedom.compiler;
4
5 public static class csharpcodevaluehelper<t>
6 {
7 /// <summary>
8 /// 编译器实例
9 /// </summary>
10 private static csharpcodeprovider csharpcodeprovider { get; set; }
11
12 /// <summary>
13 /// 编译器参数
14 /// </summary>
15 private static compilerparameters compilerparameters { get; set; }
16
17 /// <summary>
18 /// 构造函数
19 /// </summary>
20 static csharpcodevaluehelper()
21 {
22 csharpcodeprovider = new csharpcodeprovider();
23
24 compilerparameters = new compilerparameters();
25 compilerparameters.referencedassemblies.add("system.dll");
26 compilerparameters.referencedassemblies.add("system.data.dll");
27 compilerparameters.referencedassemblies.add("system.deployment.dll");
28 compilerparameters.referencedassemblies.add("system.drawing.dll");
29 compilerparameters.referencedassemblies.add("system.windows.forms.dll");
30 compilerparameters.referencedassemblies.add("system.xml.dll");
31 compilerparameters.generateexecutable = false;
32 compilerparameters.generateinmemory = true;
33 }
34
35 /// <summary>
36 /// 获取代码的值
37 /// </summary>
38 /// <param name="csharpcode">csharpcode代码</param>
39 /// <returns>动态csharpcode代码的值</returns>
40 public static t getcodevalue(string csharpcode)
41 {
42 compilerresults compilerresults = csharpcodeprovider.compileassemblyfromsource(compilerparameters, createcode(csharpcode));
43
44 if (compilerresults.errors.haserrors)
45 {
46 string errorstring = string.empty;
47 errorstring += "编译错误:n";
48 foreach (compilererror err in compilerresults.errors)
49 {
50 errorstring += err.errortext + "n";
51 }
52 throw new exception(errorstring);
53 }
54 else
55 {
56 // 通过反射,调用动态类dynamicclass实例
57 assembly assembly = compilerresults.compiledassembly;
58 object dynamicclass = assembly.createinstance("dynamicnamespace.dynamicclass");
59 methodinfo methodinfo = dynamicclass.gettype().getmethod("getvalue");
60
61 return (t)methodinfo.invoke(dynamicclass, null);
62 }
63 }
64
65 /// <summary>
66 /// 创建代码
67 /// </summary>
68 /// <param name="csharpcode">csharpcode代码</param>
69 /// <returns>创建完成的代码www.3ppt.com</returns>
70 private static string createcode(string csharpcode)
71 {
72 stringbuilder strbuilder = new stringbuilder();
73 strbuilder.appendline("using system;");
74 strbuilder.appendline("using system.collections.generic;");
75 strbuilder.appendline("using system.componentmodel;");
76 strbuilder.appendline("using system.data;");
77 strbuilder.appendline("using system.drawing;");
78 strbuilder.appendline("using system.text;");
79 strbuilder.appendline("using system.windows.forms;");
80
81 strbuilder.appendline("namespace dynamicnamespace");
82 strbuilder.appendline("{");
83 strbuilder.appendline(" public class dynamicclass");
84 strbuilder.appendline(" {");
85 strbuilder.appendline(" public object getvalue()");
86 strbuilder.appendline(" {");
87 strbuilder.appendline(" return " + csharpcode + ";");
88 strbuilder.appendline(" }");
89 strbuilder.appendline(" }");
90 strbuilder.appendline("}");
91
92 string code = strbuilder.tostring();
93 return code;
94 }
95 }
分享到:
相关推荐
管理系统 mvc asp.net c# demo 示例 代码
asp.net c#微信授权登录代码(包含所有代码),部署到你自己的项目立马可用,无需修改
C#本科毕业设计基于ASP.NET的人事管理系统源代码C#本科毕业设计基于ASP.NET的人事管理系统源代码C#本科毕业设计基于ASP.NET的人事管理系统源代码C#本科毕业设计基于ASP.NET的人事管理系统源代码。C#本科毕业设计基于...
asp.net c# Google 翻译 源代码 利用Google翻译提供的api 在asp.net下实现 多国语言翻译
基于ASP.NET C#的全源码完整OA,包括人事管理、用户权限管理、信息发布、用车管理等内容。
论坛 原代码 asp.net C#论坛 原代码 asp.net C#论坛 原代码 asp.net C#论坛 原代码 asp.net C#论坛 原代码 asp.net C#论坛 原代码 asp.net C#论坛 原代码 asp.net C#
C# asp.net 开发的发送邮箱代码 asp.net web自动发送邮件
该网站主要包括学生模块、教师模块、管理员模块。 (1) 学生模块包括:观看教学视频、下载教学课件、查看作业发布、提交作业、给老师留言。 (2) 教师模块包括:上传课程视频、编辑课件内容、布置作业、批改作业、...
之后单击'生成单层代码'新建App_Code文件夹将生成的C#代码(ASP.NET后台代码)放里面, 【生成三层工厂模式项目】 (1)B/S架构: 输入数据库名(Server)登录名(Name)密码(Pwd)连接数据库成功后直接点生成整个项目...
not support 完整asp.net(c#)网站源代码,可惜没有说明 完整asp.net(c#)网站源代码,可惜没有说明
一个用于学习Asp.NET C#编程的简单三层架构新闻发布系统,此源码是我学习三层架构时做的一个新闻发布系统,供学习三层的朋友们参考。 源码中涉及用到的技术: C#,Sql Server2005存储过程,触发器,Div+Css,jQuery, ...
源代码 ASP.NET C#源代码 ASP.NET C#
数据访问层代码 ADO.Net 数据访问 访问数据库代码 Sqlserver,包括打开关闭连接,返回不同值方法,
ASP.NET和C#数据库操作源代码
asp.net 源码 C# 编程底层代码
asp.net C# 入门 源代码
asp.net c#的代码实例,有数据库连接,最基本代码,还有指导书
ASP.NET C# 餐饮消费管理系统 源代码 用来学习 帮助项目经验少的同学增加经验。
web售票系统.asp.net C#源代码web售票系统.asp.net C#源代码
ASP.NET c# SQL SERVER 2005连接数据库 代码 数据访问层 连接数据库的代码