2009-08-11 8 views
1

Possible en double:
C# eval equivalent?mise en œuvre JS Eval en C#

en double de How can I evaluate C# code dynamically?

Comment pouvons-nous mettre en œuvre JS eval() en C# Si possible donner un exemple .. merci

+0

Pouvez-vous inclure au projet MSScript.dll, si oui, je fournirais une réponse – Dewfy

+0

a = "<>/100"; a.replace ("<>", "20"); chaîne b = eval (a); je devrais obtenir .2 comme résultat comment puis-je le faire en C# sans utiliser JScript est-ce possible? pour remplacer eval (a); – Preetham

+0

[équivalent C# eval?] (Http://stackoverflow.com/questions/4629/c-eval-equivalent) – rahul

Répondre

4

Vous pouvez réellement utiliser le JScript eval fonction de C# ...

Créer un JsMath.js fichier, avec le code JScript suivant:

class JsMath 
{ 
    static function Eval(expression : String) : double 
    { 
     return eval(expression); 
    }; 
} 

Compile dans une DLL:

jsc /t:library JsMath.js 

Ajouter une référence à jsmath. dll à votre projet. Vous pouvez maintenant utiliser la classe jsmath dans votre code:

double result = JsMath.Eval(expression); 
+0

Ceci est une solution très pratique pour des évaluations rapides dans n'importe quel langage .NET. Vous avez juste besoin d'inclure une référence à Microsoft.JScript.dll également. – gavi

0

Si vous pouvez utiliser C# 3.0/.NET 3.5, il y a un échantillon d'un analyseur d'expression pleinement opérationnel en C# Samples for Visual Studio 2008 à MSDN Code Gallery, sous DynamicQuery. Cela permet non seulement d'évaluer des expressions simples, mais même de créer des fonctions (délégués) à partir d'elles, ou des expressions LINQ. (Le contrôle LinqDataSource utilise une version légèrement modifiée de cet exemple en interne.)