Skip to content

Latest commit

 

History

History
67 lines (47 loc) · 1.29 KB

README.md

File metadata and controls

67 lines (47 loc) · 1.29 KB

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