国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

通過動態編譯獲取字符串表達的值

2019-11-18 12:01:52
字體:
來源:轉載
供稿:網友

  看到許多人經常問到這個問題: 怎么由字符串 “126 + (256 - 2^4 )”,或者怎么判定 “115 > 56 14<45”的結果等等,在MSDN上查了查,寫了一個Eval類看到許多人經常問到這個問題: 怎么由字符串 “126 + (256 - 2^4 )”,或者怎么判定 “115 > 56 14<45”的結果等等,在MSDN上查了查,寫了一個Eval類。
  
  /*****************************************************************
  ** 文件名:    Eval.cs
  ** Copyright (c) 1999 -2003
  ** 創建人:    Phoenix
  ** 創建日期:
  ** 修改人:
  ** 修改日期:
  ** 描 述:     獲取字符串所表示的邏輯意義
  ** 版 本:1.0
  ******************************************************************/
  using System.CodeDom;
  using System.CodeDom.Compiler;
  using Microsoft.CSharp;
  using System.Reflection;
  
  public class Eval
  {
  static object GetValue( string value )
  {
  string codeSnippet = "using System; " + "/r/n" +
  "namespace CzG {" + "/r/n" +
  " public class Eval" + "/r/n" +
  " {" + "/r/n" +
  "    public Eval(){} " + "/r/n" +
  " public object GetValue()" + "/r/n" +
  " {" + "/r/n" +
  "  return " + value + ";" + "/r/n" +
  " }" + "/r/n" +
  " } }";
  
  CodeSnippetCompileUnit unit = new CodeSnippetCompileUnit( codeSnippet );
  
  ICodeCompiler compiler = new CSharpCodePRovider().CreateCompiler();
  CompilerParameters para = new CompilerParameters();
  para.ReferencedAssemblies.Add( "System.dll" );
  para.GenerateInMemory = true;
  para.GenerateExecutable = false;
  para.OutputAssembly = "Eval.dll";
  
  Assembly asm = compiler.CompileAssemblyFromDom( para , unit ).CompiledAssembly;
  
  Type type = asm.GetType( "CzG.Eval" );
  MethodInfo mi = type.GetMethod( "GetValue" , BindingFlags.Public BindingFlags.Instance );
  
  object obj = asm.CreateInstance( "CzG.Eval" );
  return mi.Invoke( obj , null );
  }
  }
  
  調用:
  
  Console.WriteLine( Eval.GetValue(“125 -23” ) );
  Console.WriteLine( Eval.GetValue(“125<23“ ) );
  
  Output:
  102
  False

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 铜鼓县| 嘉义县| 波密县| 祁门县| 方山县| 铜陵市| 都昌县| 广河县| 久治县| 萨嘎县| 湘西| 峨边| 喀什市| 澳门| 开江县| 南陵县| 兖州市| 长葛市| 平罗县| 隆回县| 化德县| 潼南县| 金塔县| 饶河县| 日照市| 临泉县| 克什克腾旗| 黑山县| 象山县| 平邑县| 鄂托克旗| 屯留县| 泸水县| 东兰县| 奉新县| 江油市| 双柏县| 黔江区| 奉节县| 新郑市| 新郑市|