2009-06-19 14 views
11

Estoy buscando una biblioteca de código abierto para analizar y ejecutar fórmulas/funciones en C#.Analizar y ejecutar fórmulas con C#

Me gustaría crear un conjunto de objetos que se derivan de una interfaz (es decir, IFormulaEntity) que tendría propiedades/métodos/valores y permitiría a un usuario especificar fórmulas para esos objetos.

Por ejemplo, podría tener

public class Employee : IForumulaEntity 
{ 
     public double Salary { get; set; } 
     public void SendMessage(string message) 
} 

permitir a un usuario de la aplicación para escribir algo así como;

Employee person = <get from datasource> 
if (person.Salary > 1000) 
    person.Salary += 1000; 

person.SendMessage("Hello"); 

Esto "parece C#" pero sería un lenguaje de programación simplificado. Sé que es mucho pedir. Esperaría que mis usuarios sean razonablemente capaces (es decir, puedan escribir sus propias fórmulas de Excel).

+0

(¿por qué veo esta pregunta como \ * \ * ELIMINAR MI CUENTA ** en la página principal?) –

+0

Con más de 5000 reputación y 2 insignias de oro, realmente deberías saber mejor que intentar purgar el contenido de tu pregunta de esa manera . ¿Sabía que puede señalarlos para la atención del moderador? Solo di que quieres borrar tu cuenta. Ellos se encargarán del resto por ti. Solo editar con ese mensaje no hará que un moderador lo note. – BoltClock

Respuesta

6

Mira en la funcionalidad motor de reglas que forma parte de Windows Workflow Foundation.

Este no es un lugar que uno pensaría buscar. Sin embargo, como parte del trabajo que hicieron para producir una interfaz de usuario que permite a un desarrollador de Workflow usar reglas y expresiones configurables, han encontrado una manera de hacer lo mismo en su propia aplicación, incluso si no está utilizando Workflow. en absoluto. Su documentación incluye ejemplos de alojamiento de esta funcionalidad en una aplicación de Windows Forms.

+0

+1. Sí, este es exactamente el tipo de cosas que estoy buscando [http://msdn.microsoft.com/en-us/library/aa480193.aspx], excepto que quiero permitir que mi usuario escriba las reglas. –

+0

Eso es lo que quise decir: permite que el usuario escriba las reglas. Puede alojar el diseñador de reglas en su propia aplicación, y el usuario puede escribir las reglas. Luego puede aplicar la definición de reglas escrita por el usuario contra sus datos en tiempo de ejecución. –

+0

Como de costumbre, Microsoft proporciona las herramientas. Es por eso que los amo :) –

0

Spring expressions son muy potentes, y menos de todo o nada, p. Ej. WF

(El motor se basa antlr, y las expresiones poco, mientras se tira en una librería de tamaño decente, tirón no funciona en todos Spring.NET)

+0

Y sí, ¡me enorgullezco de la puntualidad de mis respuestas! –

+0

AH! Stalker! Terminé de rodar el mío, porque el requisito es razonablemente específico. ¡Vea www.twipler.com/experiment –

+0

culpable según lo cargado! Sí, eso parece muy lejos de WF! –

0

Mientras estoy superando esto a la muerte, Dynamic LINQ obras en este espacio (específicamente la sintaxis similar a C#). Obviamente, tenga cuidado de que sus requisitos (emisión/compilación de código) sean compatibles en su contexto.

2

Puede usar cs-script. Esto le permite ejecutar el código C#, que es tal vez más de lo que desea, pero ¿por qué no se limita a C# en lugar de crear su propia sintaxis tipo C#? Es posible integrar script cs en su aplicación como DLL y puede permitir que ejecute el código C# que no es parte de una clase para que los usuarios puedan escribir las pocas declaraciones que necesitan.

Cuestiones relacionadas