Beispiel
AbgelaufenDie Verwendung von Mastersign.Expressions ist sehr einfach:
using System;
using de.mastersign.expressions;
static class Program
{
static void Main()
{
// Erzeuge den Auswertungskontext für den Ausdruck
var context = new EvaluationContext();
// Lade die Standardfunktionen (Mathematik, Zeichenkettenverarbeitung, ...)
context.LoadAllPackages();
// Füge eine eigene Variable hinzu
context.SetVariable("x", 4);
// Füge eine eigene Funktion hinzu
context.AddFunction("neg", (Func<double, double>)(v => -v));
// Lege die Parameterliste fest
// Kompiliere den Ausdruck zu einem Lambda-Delegat
context.SetParameters(new ParameterInfo("a", typeof(int)));
var function = context.CompileExpression<int, double>("sin(PI * neg(10.0 + x)) + a");
// Rufe den Delegat auf und gib das Ergebnis aus
Console.WriteLine(function(2));
}
}
Variablen werden im Normalfall so kompiliert, dass sie zu jeder Zeit immer den aktuellen Wert im Auswertungskontext repräsentieren. Optional kann der Wert einer Variablen als konstant festgelegt werden, dann wird der Wert der Variablen als Konstante in den Delegaten kompiliert. Nachträgliche Änderungen, an einer als konstant markierten Variablen im Kontext, wirken sich nicht auf bereits kompilierte Delegaten aus. Dafür ist die Performance von Konstanten besser als die von echten Variablen.