Skip to content

Conversation

@Raffaele-Doti
Copy link

This pull request adds several new methods to the codebase that enable the injection of the "Expression" class in an Inversion of Control (IoC) context, such as the ASP.NET Core framework. The new methods provide greater flexibility and customization options for developers who need to use the "Expression" class in these contexts, allowing for more seamless integration with other components and services.

In addition, this pull request also includes some overloads of the "Evaluate" method, where the dependencies for formula evaluation, options, and expression have been moved to the appropriate method. This improves the overall design and organization of the codebase and makes it easier for developers to understand and modify the evaluation logic.

By adding these methods and refactoring the code, this pull request aims to improve the overall usability and extensibility of the codebase and to make it easier for developers to work with the "Expression" class in a variety of contexts.

…stance without expression to evaluate ( this will be a dependency and it's not good for asp.net ef core dep inj flow )

- Created overloaded  "Evaluate" methods allowing to supply an expression to evaluate
…n" interface

- Modified "Context" constructor in order to add dinamically classes implementing "IFunction" interface
@bijington
Copy link
Owner

Thank you @Raffaele-Doti for this submission. I like the idea of making it easier to use the library with dependency injection however I am not so keen on the use of reflection. Perhaps we can work together to find a more performant solution to this?

I would also like to keep expressions immutable but we can easily workaround that by wrapping the DI friendly layer into its own class.

You mentioned using ASP.NET Core? I wonder if we could provide an extension package that does this work. My main issue with reflection is that I use this library in mobile applications where performance is key, especially when running on older Android devices that don't live up to expectations.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants