Valutare le formule di stringa dinamici in .NET?
-
08-10-2019 - |
Domanda
Sto lavorando su un progetto in cui ho bisogno di valutare alcune formule in VB.NET. Sto usando il MS Script Control di valutare alcune delle semplici formule logiche / matematiche.
Tuttavia, sono ora di fronte a che fare con le espressioni di stringa che le variabili impostate nel mio programma a certi valori. Così, per esempio, diciamo che ho ottenuto il seguente:
Dim netPrice As Decimal
Dim expressionFormula As String = "netPrice = 0"
ho bisogno di essere in grado di valutare "expressionFormula" e impostare la variabile netPrice a 0. Ho provato diverse combinazioni di metodo .AddObject nel controllo MS Script, ma niente ha funzionato ancora.
Vorrei ricordare questo esempio è solo a scopo illustrativo, lo scenario reale coinvolge diversi oggetti DataTable da un DataSet tipizzato. Alla fine, alcuni dei campi nel mio DataTable potrebbe essere necessario impostare a valori costanti specifiche basate su queste espressioni dinamiche.
Grazie per l'aiuto!
Soluzione
Per questo tipo di funzionalità, sarà necessario scrivere il proprio parser e valutatore.
Date un'occhiata al Linq Expression
classe -. può aiutare
In alternativa, a seconda del vostro approccio, si può essere in grado di scrivere e classi dinamiche compilazione usando la CSharpCodeProvider
per compilare le espressioni come classi C # / assiemi.
Altri suggerimenti
Se si deve gestire espressioni complesse, forse questa libreria può essere utile: http://flee.codeplex.com/ ?
dinamica LINQ è quello che stai cercando per