2021-03-17 14:57:59 +01:00
2021-03-17 14:56:38 +01:00
2021-03-17 14:57:59 +01:00
2021-03-17 14:56:38 +01:00
2021-03-17 14:56:38 +01:00

DotExperiment

Dot experiments is a list of over engineered functions in dotnet.

Expressions

A set of functions to convert and rewrite expressions. This allow users to transform expression's parameters & return type and rewrite accessors.

Expression Convertor Usage:

Expression<Func<int, bool>> func = x => x > 100;
Expression<Func<long, bool>> converted = ExpressionUtility.Convert<Func<long, bool>>(func);

Expression Rewrite Usage:

public class Parent
{
    public ICollection<GenreLink> GenreLinks { get; set; }
    
    [ExpressionRewrite(nameof(GenreLinks), nameof(GenreLink.Genre))]
    public ICollection<Genre> Genres
    {
        get => GenreLinks?.Select(x => x.Genre);
        set => GenreLinks = value?.Select(x => new GenreLink(this, x)).ToList();
    }
}

public class Genre 
{
    public bool Enabled { get; set; }
}

public class GenreLink
{
    public Parent Parent { get ; set; }
    public Genre Genre { get; set; }
    
    public GenreLink(Parent parent, Genre genre)
    {
        Parent = parent;
        Genre = genre;
    }
}

Expression<Func<Parent, ICollection<Genre>>> = x => x.Genres.Any(y => y.Enabled);
Expession rewrited = Expression.ExpressionRewrite(expression);
// rewrited contains: x => x.GenreLinks.Any(y => y.Genre.Enabled);
Description
A list of over-engineered functions
Readme 73 KiB
Languages
C# 100%