PDA

View Full Version : نحوه پردازش رشته



ali_shmki
دوشنبه 25 آبان 1388, 17:50 عصر
چه طور ميتونم يه دستور C# كه به صورت رشته درآمده است رو اجرا كنم؟
مثلا يه متغير داريم از نوع string كه درون اون يه دستور هست. حالا ميخواهيم اين متغير رو يه بلايي سرش بياريم كه اون دستور اجرا بشه.
مثلا:

;" 'string str=" textbox1.text='ALI

Hamishebahar
دوشنبه 25 آبان 1388, 18:34 عصر
سلام
دوست من تو بگو میخوای چی کار کنی تا کمکت کنم.
همچین کاری امکان نداره.مگر اینکه بتونی dll رو فراخوانی کنی.
موفق باشید.

ali_shmki
دوشنبه 25 آبان 1388, 18:39 عصر
:لبخندساده: كار خاصي نميخوام بكنم. اين فقط يه سواله كه به ذهنم خطور كرده. همين. چقدر مطمئني كه امكان نداره؟

saed2006
دوشنبه 25 آبان 1388, 18:55 عصر
private Assembly BuildAssembly(string code)
{
Microsoft.CSharp.CSharpCodeProvider provider =
new CSharpCodeProvider();
ICodeCompiler compiler = provider.CreateCompiler();
CompilerParameters compilerparams = new CompilerParameters();
compilerparams.GenerateExecutable = false;
compilerparams.GenerateInMemory = true;
CompilerResults results =
compiler.CompileAssemblyFromSource(compilerparams, code);
if (results.Errors.HasErrors)
{
StringBuilder errors = new StringBuilder("Compiler Errors :\r\n");
foreach (CompilerError error in results.Errors )
{
errors.AppendFormat("Line {0},{1}\t: {2}\n",
error.Line, error.Column, error.ErrorText);
}
throw new Exception(errors.ToString());
}
else
{
return results.CompiledAssembly;
}
}





public object ExecuteCode(string code,
string namespacename, string classname,
string functionname, bool isstatic, params object[] args)
{
object returnval = null;
Assembly asm = BuildAssembly(code);
object instance = null;
Type type = null;
if (isstatic)
{
type = asm.GetType(namespacename + "." + classname);
}
else
{
instance = asm.CreateInstance(namespacename + "." + classname);
type = instance.GetType();
}
MethodInfo method = type.GetMethod(functionname);
returnval = method.Invoke(instance, args);
return returnval;
}

saed2006
دوشنبه 25 آبان 1388, 18:56 عصر
کار نشد نداره:چشمک:

saied_genius
دوشنبه 25 آبان 1388, 19:28 عصر
يه سر به لينك زير بزن:
http://barnamenevis.org/forum/showthread.php?t=187399

نحوه استفاده:


saiedDelshad09131041838Evaluate.Evaluate.Eval("MessageBox.Show(\"Test\");");

موفق باشيد.