public void ConvertToOk() { var lambda = EBuilder.Lambda(typeof(int), a => { var aexp = a.EBuilder(); return(Convert(aexp, typeof(EBuilderInstanceTests.SomeClass))); }); Assert.Equal("(Int32 p_0) => Convert(p_0 As SomeClass)", lambda.ToDebugString()); }
public void CastOk() { var lambda = EBuilder.Lambda(typeof(EBuilderInstanceTests.SomeClass), a => { var aexp = a.EBuilder(); return(Cast(aexp, typeof(object))); }); Assert.Equal("(SomeClass p_0) => (p_0 As Object)", lambda.ToDebugString()); }
private MemberExpression GetExpr(string name) { return(EBuilder.MemberAccess(null, _type.FieldOrProperty(name))); }
protected override DynamicEBuilder Invoke(Expression[] args) { return(EBuilder.New(_type, args)); }
private IndexExpression GetIndexExpr(Expression[] index) { return(EBuilder.Index(_type, index)); }
protected override DynamicEBuilder Method(string name, params Expression[] args) { return(EBuilder.Method(_type, name, args)); }
/// <summary> /// Builds if expression /// </summary> /// <param name="test">Test expression</param> /// <param name="ifTrue">Then action</param> /// <param name="ifFalse">Else action</param> public static DynamicEBuilder If(object test, object ifTrue, object ifFalse = null) { return(EBuilder.If(Expr(test), Expr(ifTrue), ExprNull(ifFalse))); }
/// <summary> /// Builds using(disposable) body; /// </summary> /// <param name="disposable">IDisposable Expression</param> /// <param name="body">Body Expression</param> public static Expression Using(object disposable, object body) { return(EBuilder.Using(Expr(disposable), Expr(body))); }
/// <summary> /// Builds typed foreach loop /// </summary> /// <param name="type">Element type</param> /// <param name="enumerable">() => Enumerable Expression</param> /// <param name="bodyBuilder">loop => loop body</param> public static Expression ForEach(Type type, Func <object> enumerable, Func <IForeachControl, object> bodyBuilder) { return(EBuilder.ForEach(type, Expr(enumerable()), ExprFunc(bodyBuilder))); }
/// <summary> /// Builds for loop /// </summary> /// <param name="test">() => Test Expression</param> /// <param name="iterator">() => Iteration expression</param> /// <param name="bodyBuilder">loop => loop body</param> public static Expression For(Func <object> test, Func <object> iterator, Func <ILoopControl, object> bodyBuilder) { return(EBuilder.For(ExprNull(test), ExprNull(iterator), ExprFunc(bodyBuilder))); }
/// <summary> /// Builds while loop /// </summary> /// <param name="test">() => Test Expression</param> /// <param name="bodyBuilder">loop => loop body</param> public static Expression While(Func <object> test, Func <ILoopControl, object> bodyBuilder) { return(EBuilder.While(Expr(test()), ExprFunc(bodyBuilder))); }
/// <summary> /// Builds loop /// </summary> /// <param name="bodyBuilder">loop => loop body</param> public static Expression Loop(Func <ILoopControl, object> bodyBuilder) { return(EBuilder.Loop(ExprFunc(bodyBuilder))); }