Skip to content

ctslr/typedexpressions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

Typed Expressions

    var parameter = Expression.Parameter(typeof(int));
    var constant = Expression.Constant(1337.0);
    
    // type mismatch here -- runtime
    var binary = Expression.And(parameter, constant);
    
    // why do I have to explicitly provide lambda types?
    var lambda = Expression.Lambda<Func<int, int>>(binary, parameter);
    
    // and what happends if I provide those incorrectly? Yup, another runtime failure
    var lambda = Expression.Lambda<Func<bool, string>>(binary, parameter);

Actually the whole "make a compilable expression" thing doesn't make sense

    var parameter = Expression.Parameter<int>();
    var constant = Expression.Constant(1337);
    
    // can't infer type -- compile time
    var implicitBinary = Expression.And(parameter, Expression.Constant(1337.0));
    // can't cast -- compile time
    var binary0 = Expression.And<int>(parameter, Expression.Constant(1337.0));
    
    var binary = Expression.And(parameter, constant);
    
    // no more lambdas
    var func = binary.Compile();

About

Strongly-typed C# expressions

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages