Jeg ved, det ikke er en ideel løsning... Men jeg er i gang med at lave min egen condition parser (eks.: a=2&kdf=45|dd=false => true), og den skal kunne parse ud fra en forskellige elementers egenskaber. Forresten: Findes der en indbygget parser til string-baserede conditions?
1) generere C# code on the fly og compile og load den
2) kalde JavaScript eval funktion
Synes godt om
Slettet bruger
27. april 2008 - 17:45#5
Hm... Ja... Det bliver lidt over mit nuværende niveau, uanset hvad jeg vælger. Jeg tror, jeg finder en anden løsning og dropper parseren. Tager alligevel alt for meget tid og tålmodighed for mig! Du kan jo smide et svar, hvis du vil have lidt til samlingen ;P
using System; using System.Reflection; using System.CodeDom.Compiler;
using Microsoft.CSharp; using Microsoft.JScript;
namespace E { public interface IJS { double Eval(string expr); } public class JS { private static IJS engine; static JS() { string src = "import System; import E; public class C implements IJS { public function Eval(expr : String) : Double { return eval(expr); } }"; CodeDomProvider comp = new JScriptCodeProvider(); CompilerParameters param = new CompilerParameters(); param.GenerateInMemory = true; param.ReferencedAssemblies.Add("System.dll"); param.ReferencedAssemblies.Add(System.Reflection.Assembly.GetExecutingAssembly().Location); CompilerResults res = comp.CompileAssemblyFromSource(param, src); Assembly asm = res.CompiledAssembly; engine = (IJS)asm.CreateInstance("C"); } public static double Eval(string expr) { return engine.Eval(expr); } } public class Program { public static void Main(string[] args) { Console.WriteLine(JS.Eval("2+2+2")); Console.WriteLine(JS.Eval("2*2+2*2")); } } }
Synes godt om
Slettet bruger
27. april 2008 - 18:02#7
Tja, det kan du jo sagtens sige, men det er ikke så smart, hvis jeg ikke ved, hvad jeg laver - og jeg fatter ingenting af ovenstående. Så vil jeg hellere gøre den på en enklere måde og slippe for alt bøvlet med min egen parser.
Så har jeg faktisk et andet lille spørgsmål i stedet: Kan man overskrive en klasseinstans' metoder fra et andet scope?
En anden mulighed (men igen i den lidt avancerede afdeling) vill vaere noget DI og/eller AOP.
Synes godt om
Slettet bruger
28. april 2008 - 16:54#14
Har jeg så aldrig hørt om :) Så ja, lidt for svært for mig. Jeg finder ud af noget andet. Takker.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.