[ Príspevkov: 3 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.04.09
Prihlásený: 26.09.15
Príspevky: 23
Témy: 7 | 7

Ahoj,

mam stiahnuty kod z netu pre vypocet matematickych formulacii cez string a potreboval by som implementovat aj vlastne metody z triedy tj. nie len class Math.

Stiahnuty kod:

Kód:
string code = "Math.Pow(23 + 48, 2) - (7.76 * 3.14)";
string result = Eval.StringEval(code);
Console.WriteLine("Results: " + result);

Eval Class
--------------------
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text;
using System.CodeDom;
using System.CodeDom.Compiler;

public static class Eval
{
private static string funcprefix = "using System;\r\n"
+ "public delegate void Proc();\r\n"
+ "public class Wrapper { \r\n"
+ " public static object Set(string name, object value) { \r\n"
+ " AppDomain.CurrentDomain.SetData(name, value);\r\n"
+ " return value; \r\n"
+ " }\r\n"
+ " public static object Get(string name) { \r\n"
+ " return AppDomain.CurrentDomain.GetData(name);\r\n"
+ " }\r\n"
+ " public static object Invoke(Proc proc) { \r\n"
+ " proc();\r\n"
+ " return null; \r\n"
+ " }\r\n"
+ " public static object Eval() { return \r\n";
static string funcsuffix = "; \r\n} }";
public static string StringEval(string expr)
{
string program = funcprefix + expr + funcsuffix;
CompilerParameters cp = new CompilerParameters();
cp.GenerateExecutable = false;
cp.GenerateInMemory = true;

CompilerResults results =
CodeDomProvider.CreateProvider("C#").CompileAssemb lyFromSource(cp, new
string[]{program});
if ( results.Errors.HasErrors )
{
if ( results.Errors[0].ErrorNumber == "CS0029" )
return StringEval("Invoke(delegate { " + expr + "; })");
throw new Exception(results.Errors[0].ErrorText);
}
else
{
Assembly assm = results.CompiledAssembly;
Type target = assm.GetType("Wrapper");
MethodInfo method = target.GetMethod("Eval");
object result = method.Invoke(null, null);
return result == null ? null : result.ToString();
}
}
}


... a potreboval by som nieco na sposob

Kód:
 string code = "Test(Math.Pow(23 + 48, 2) - (7.76 * 3.14))";


Vopred vdaka za rozumnu radu.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.09.13
Prihlásený: 04.12.14
Príspevky: 68
Témy: 1 | 1

Zaujimava tema,
skusal som, da sa to.
Sprav si samostatnu libku kde naimplementujes svoji staticku triedu so svojimi statickymi matematickymi metodami.

uprav StringEval nasledovne (MyMathLib.dll je tvoja matematicka dll)
Kód:
public static string StringEval(string expr)
   {
      
      string program = funcprefix + expr + funcsuffix;
      CompilerParameters cp = new CompilerParameters();
      cp.ReferencedAssemblies.Add("MyMathLib.dll");
      cp.GenerateExecutable = false;
      cp.GenerateInMemory = true;

      CompilerResults results = CodeDomProvider.CreateProvider("C#").CompileAssemblyFromSource(cp, new
      string[] { program });
      if (results.Errors.HasErrors)
      {
         if (results.Errors[0].ErrorNumber == "CS0029")
            return StringEval("Invoke(delegate { " + expr + "; })");
         throw new Exception(results.Errors[0].ErrorText);
      }
      else
      {
         Assembly assm = results.CompiledAssembly;
         Type target = assm.GetType("Wrapper");
         MethodInfo method = target.GetMethod("Eval");
         object result = method.Invoke(null, null);
         return result == null ? null : result.ToString();
      }
   }


vola to potom budes nejako takto:
Kód:
string code = "MyMathLib.MyMathFunctions.TestFunction(Math.Pow(23 + 48, 2) - (7.76 * 3.14))";
Namespace.NazovTriedy.Funkcia


Naposledy upravil killer dňa 13.06.2014 16:57, celkovo upravené 1
Keď to dáš nabudúce do [code] bude to ešte lepšie


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.04.09
Prihlásený: 26.09.15
Príspevky: 23
Témy: 7 | 7
Napísal autor témyOffline : 13.06.2014 16:23 | C# - Formulovanie matematickych operacii pomocou string

pisem si tvoj nick :) ...dobra praca, vdaka


 [ Príspevkov: 3 ] 


C# - Formulovanie matematickych operacii pomocou string



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

C# - Formulovanie matematickych operacii pomocou string

v Assembler, C, C++, Pascal, Java

0

377

26.09.2015 20:59

nico

V tomto fóre nie sú ďalšie neprečítané témy.

Vietnamskí lekári si pri operácii svietili mobilmi

v Novinky

11

477

07.06.2007 16:19

Lub0$

V tomto fóre nie sú ďalšie neprečítané témy.

String

v PHP, ASP

2

650

19.04.2010 21:20

Antuanet

V tomto fóre nie sú ďalšie neprečítané témy.

Java String

v Assembler, C, C++, Pascal, Java

4

1203

31.03.2010 22:00

ado21

V tomto fóre nie sú ďalšie neprečítané témy.

Connection String

v Technológia .NET

3

1664

10.09.2009 12:21

TJ

V tomto fóre nie sú ďalšie neprečítané témy.

std::string

v Assembler, C, C++, Pascal, Java

2

721

01.01.2010 0:20

koso

V tomto fóre nie sú ďalšie neprečítané témy.

pascal: string 255+

v Assembler, C, C++, Pascal, Java

4

589

03.02.2011 18:08

juho

V tomto fóre nie sú ďalšie neprečítané témy.

String od do

v Delphi, Visual Basic

1

645

30.11.2009 18:55

ha2

V tomto fóre nie sú ďalšie neprečítané témy.

Java int = string

v Assembler, C, C++, Pascal, Java

4

537

17.02.2016 20:33

neutroN

V tomto fóre nie sú ďalšie neprečítané témy.

c++ praca so string

v Assembler, C, C++, Pascal, Java

2

422

16.11.2014 13:17

mork4

V tomto fóre nie sú ďalšie neprečítané témy.

vysledok gettype stale string

v PHP, ASP

6

495

14.12.2010 17:05

Feko

V tomto fóre nie sú ďalšie neprečítané témy.

[VYRIESENE] String do binary

v PHP, ASP

2

471

07.03.2009 15:57

Tominator

V tomto fóre nie sú ďalšie neprečítané témy.

String = nieco z DB

v PHP, ASP

2

394

23.03.2012 14:49

exoomer

V tomto fóre nie sú ďalšie neprečítané témy.

C++ string to float

v Assembler, C, C++, Pascal, Java

11

1072

27.08.2010 12:46

Progy

V tomto fóre nie sú ďalšie neprečítané témy.

Query string - vs _

v Internetový marketing, SEO, reklama

4

493

18.08.2012 22:41

emer

V tomto fóre nie sú ďalšie neprečítané témy.

html adresa - cut string

v PHP, ASP

14

1838

14.05.2018 9:21

baumax



© 2005 - 2024 PCforum, edited by JanoF