我已经解决了,以下是解决的类的详细信息:
来源:互联网 发布:app生成软件 编辑:程序博客网 时间:2024/06/01 10:47
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using System.Text;
using System.Reflection;
namespace ADOGuy
{
/// <summary>
/// Summary description for Class1.
/// </summary>
public class Evaluator
{
public Evaluator(EvaluatorItem[] items)
{
ConstructEvaluator(items);
}
public Evaluator(Type returnType, string expression, string name)
{
EvaluatorItem[] items = { new EvaluatorItem(returnType, expression, name) };
ConstructEvaluator(items);
}
public Evaluator(EvaluatorItem item)
{
EvaluatorItem[] items = { item };
ConstructEvaluator(items);
}
private void ConstructEvaluator(EvaluatorItem[] items)
{
ICodeCompiler comp = (new CSharpCodeProvider().CreateCompiler());
CompilerParameters cp = new CompilerParameters();
cp.ReferencedAssemblies.Add("system.dll");
cp.ReferencedAssemblies.Add("system.data.dll");
cp.ReferencedAssemblies.Add("system.xml.dll");
cp.GenerateExecutable = false;
cp.GenerateInMemory = true;
StringBuilder code = new StringBuilder();
code.Append("using System; /n");
code.Append("using System.Data; /n");
code.Append("using System.Data.SqlClient; /n");
code.Append("using System.Data.OleDb; /n");
code.Append("using System.Xml; /n");
code.Append("namespace ADOGuy { /n");
code.Append(" public class _Evaluator { /n");
foreach(EvaluatorItem item in items)
{
code.AppendFormat(" public {0} {1}() ",
item.ReturnType.Name,
item.Name);
code.Append("{ ");
code.AppendFormat(" return ({0}); ", item.Expression);
code.Append("}/n");
}
code.Append("} }");
CompilerResults cr = comp.CompileAssemblyFromSource(cp, code.ToString());
if (cr.Errors.HasErrors)
{
StringBuilder error = new StringBuilder();
error.Append("Error Compiling Expression: ");
foreach (CompilerError err in cr.Errors)
{
error.AppendFormat("{0}/n", err.ErrorText);
}
throw new Exception("Error Compiling Expression: " + error.ToString());
}
Assembly a = cr.CompiledAssembly;
_Compiled = a.CreateInstance("ADOGuy._Evaluator");
}
public int EvaluateInt(string name)
{
return (int) Evaluate(name);
}
public string EvaluateString(string name)
{
return (string) Evaluate(name);
}
public bool EvaluateBool(string name)
{
return (bool) Evaluate(name);
}
public object Evaluate(string name)
{
MethodInfo mi = _Compiled.GetType().GetMethod(name);
return mi.Invoke(_Compiled, null);
}
static public int EvaluateToInteger(string code)
{
Evaluator eval = new Evaluator(typeof(int), code, staticMethodName);
return (int) eval.Evaluate(staticMethodName);
}
static public string EvaluateToString(string code)
{
Evaluator eval = new Evaluator(typeof(string), code, staticMethodName);
return (string) eval.Evaluate(staticMethodName);
}
static public bool EvaluateToBool(string code)
{
Evaluator eval = new Evaluator(typeof(bool), code, staticMethodName);
return (bool) eval.Evaluate(staticMethodName);
}
static public object EvaluateToObject(string code)
{
Evaluator eval = new Evaluator(typeof(object), code, staticMethodName);
return eval.Evaluate(staticMethodName);
}
const string staticMethodName = "__foo";
Type _CompiledType = null;
object _Compiled = null;
}//CLASS
public class EvaluatorItem
{
public EvaluatorItem(Type returnType, string expression, string name)
{
ReturnType = returnType;
Expression = expression;
Name = name;
}
public Type ReturnType;
public string Name;
public string Expression;
}//CLASS
}//NAMESPACE
我已经解决了,以下是解决的类的详细信息:';return true">
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
如果在文本框中输入简单的数学计算式:200+100*290之类的计算式,如何计算出他们的值:using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using System.Text;
using System.Reflection;
namespace ADOGuy
{
/// <summary>
/// Summary description for Class1.
/// </summary>
public class Evaluator
{
public Evaluator(EvaluatorItem[] items)
{
ConstructEvaluator(items);
}
public Evaluator(Type returnType, string expression, string name)
{
EvaluatorItem[] items = { new EvaluatorItem(returnType, expression, name) };
ConstructEvaluator(items);
}
public Evaluator(EvaluatorItem item)
{
EvaluatorItem[] items = { item };
ConstructEvaluator(items);
}
private void ConstructEvaluator(EvaluatorItem[] items)
{
ICodeCompiler comp = (new CSharpCodeProvider().CreateCompiler());
CompilerParameters cp = new CompilerParameters();
cp.ReferencedAssemblies.Add("system.dll");
cp.ReferencedAssemblies.Add("system.data.dll");
cp.ReferencedAssemblies.Add("system.xml.dll");
cp.GenerateExecutable = false;
cp.GenerateInMemory = true;
StringBuilder code = new StringBuilder();
code.Append("using System; /n");
code.Append("using System.Data; /n");
code.Append("using System.Data.SqlClient; /n");
code.Append("using System.Data.OleDb; /n");
code.Append("using System.Xml; /n");
code.Append("namespace ADOGuy { /n");
code.Append(" public class _Evaluator { /n");
foreach(EvaluatorItem item in items)
{
code.AppendFormat(" public {0} {1}() ",
item.ReturnType.Name,
item.Name);
code.Append("{ ");
code.AppendFormat(" return ({0}); ", item.Expression);
code.Append("}/n");
}
code.Append("} }");
CompilerResults cr = comp.CompileAssemblyFromSource(cp, code.ToString());
if (cr.Errors.HasErrors)
{
StringBuilder error = new StringBuilder();
error.Append("Error Compiling Expression: ");
foreach (CompilerError err in cr.Errors)
{
error.AppendFormat("{0}/n", err.ErrorText);
}
throw new Exception("Error Compiling Expression: " + error.ToString());
}
Assembly a = cr.CompiledAssembly;
_Compiled = a.CreateInstance("ADOGuy._Evaluator");
}
public int EvaluateInt(string name)
{
return (int) Evaluate(name);
}
public string EvaluateString(string name)
{
return (string) Evaluate(name);
}
public bool EvaluateBool(string name)
{
return (bool) Evaluate(name);
}
public object Evaluate(string name)
{
MethodInfo mi = _Compiled.GetType().GetMethod(name);
return mi.Invoke(_Compiled, null);
}
static public int EvaluateToInteger(string code)
{
Evaluator eval = new Evaluator(typeof(int), code, staticMethodName);
return (int) eval.Evaluate(staticMethodName);
}
static public string EvaluateToString(string code)
{
Evaluator eval = new Evaluator(typeof(string), code, staticMethodName);
return (string) eval.Evaluate(staticMethodName);
}
static public bool EvaluateToBool(string code)
{
Evaluator eval = new Evaluator(typeof(bool), code, staticMethodName);
return (bool) eval.Evaluate(staticMethodName);
}
static public object EvaluateToObject(string code)
{
Evaluator eval = new Evaluator(typeof(object), code, staticMethodName);
return eval.Evaluate(staticMethodName);
}
const string staticMethodName = "__foo";
Type _CompiledType = null;
object _Compiled = null;
}//CLASS
public class EvaluatorItem
{
public EvaluatorItem(Type returnType, string expression, string name)
{
ReturnType = returnType;
Expression = expression;
Name = name;
}
public Type ReturnType;
public string Name;
public string Expression;
}//CLASS
}//NAMESPACE
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 我已经解决了,以下是解决的类的详细信息:
- 我要怎么才能添加我的公告呢?_已经解决了!
- 已经解决的算法
- 关于注册信息的校验代码已经解决了
- 虚拟机遇到的一点小问题,已经解决了
- 这是困扰了我几天的大问题.....解决chrome 不兼容window.showModalDialog问题
- 我浪费了整整一个下午的时间解决的问题,竟然是因为我的粗心。。
- 有关我的详细信息
- 以下是某论坛坛主,给予的回复,证实了我的猜测
- 解决8.3以下的省略号颜色问题
- 解决ie9以下的跨域问题
- 环信安卓5.0以下闪退的解决
- 解决IE8以下不支持getElementsByClassName的方法
- XZ_iOS之出现以下问题的解决
- 这两天比较无聊学习了jdbc,以下是我整理的心得
- 好长时间上不了博客,我还以为因为我发表抗日言论账户被删了,编程中好多新经验新发现不能拿出来和朋友们分享,那个急呀。以下是我在工作中积累的一些经验和解决的一些问题,希望能对大家有一点帮助。
- 单位的局域网遇到了这样的问题,已经解决了,大家学习下..
- RegQueryValueEx 耗了我一天的时间 终于解决了
- 创建.NET Web服务(转)
- Counting Records in an SQL Table by G.F. Weis Gfw
- VSS资料(我为公司写的,部分是ICP来的)
- VB.Net基本语句(推荐)
- 一个数据库操作类的实例(二.Provider类)
- 我已经解决了,以下是解决的类的详细信息:
- 设计模式c#语言描述——适配器模式
- 在ASP.NET下实现数字和字符相混合的验证码(C# Code)
- 利用WebService技术实现远程数据库存取
- 利用PocketSOAP链接webservice(1)---.net
- 窗体显示有模式与无模式之分...
- 初尝Visual Perl和Perl.Net
- 在ASP.NET下实现数字和字符相混合的验证码(vb.net Code)
- 设计模式c#语言描述——建造者模式