Skip to content

AndreyChechel/Explosuress

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Explosuress

NuGet Status

Closure-free C# Expressions.

Explosuress processes an Expression Tree and removes all closures by evaluating and replacing them with corresponding values. This operation reduces size and memory footprint of the tree.

Installation

  1. Install the NuGet package:
Install-Package Explosuress

or

dotnet add package Explosuress
  1. Add using statement:
using System.Linq.Expressions;
  1. Call the Explosuress() extension method to process an expression:
var closureFreeExpr = expression.Explosuress();

Example

Consider the Expression Tree shown below:

var local = new Local
{
    Field = 123
};

Expression<Func<int, bool>> expression =
    x => local.Field == x;
    
Console.WriteLine(expression);

The tree structure contains a closure to local.Field:

x => (value(Explosuress.Demo.Program+<>c__DisplayClass0_0).local.Field == x)

Explosuress can remove the closure:

var closureFreeExpr = expression.Explosuress();

Console.WriteLine(closureFreeExpr);

This is how the closure-free structure will look like:

x => (123 == x)

License

MIT

Releases

No releases published

Packages

No packages published

Languages