举例:代码中有一段代码for()
{
if(a>=2&&b<=3)//条件
{
...
}
}如果能改成如下:
for()
{
if("a>=2&&b<=3")//条件
{
...
}
}如果能写成这样就能随意改变条件,就像sql的查询分析器请教有没有实现方法,谢谢
{
if(a>=2&&b<=3)//条件
{
...
}
}如果能改成如下:
for()
{
if("a>=2&&b<=3")//条件
{
...
}
}如果能写成这样就能随意改变条件,就像sql的查询分析器请教有没有实现方法,谢谢
写一个方法 然后将"a>=2&&b <=3"作为参数传递进来 当然方法的参数应该Boolean类型的
只要给我一个 delegate 实例就行:delegate bool p(string expression);
void somefunction(p pinstance, ...)
{
//....
for()
{
if(pinstance("a>=2&&b <=3"))//条件
{
...
}
}
//.....
using System.CodeDom.Compiler;
using System.Reflection;private void button1_Click(object sender, EventArgs e)
{
ICodeCompiler vCodeCompiler = new CSharpCodeProvider().CreateCompiler();
CompilerParameters vCompilerParameters = new CompilerParameters();
vCompilerParameters.GenerateExecutable = false;
vCompilerParameters.GenerateInMemory = true;
string vSource =
"public class Temp\n" +
"{\n" +
" public double Test(double A, double B)\n" +
" {\n" +
" return A / B;\n" +
" }\n" +
"}\n";
CompilerResults vCompilerResults =
vCodeCompiler.CompileAssemblyFromSource(vCompilerParameters, vSource);
Assembly vAssembly = vCompilerResults.CompiledAssembly;
object vTemp = vAssembly.CreateInstance("Temp");
MethodInfo vTest = vTemp.GetType().GetMethod("Test");
for (int i = 1; i < 100; i++)
{
object[] vParams = { 1, i };
object vDouble = vTest.Invoke(vTemp, vParams);
textBox1.AppendText(vDouble.ToString() + "\r\n");
}
}