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());
        }
示例#3
0
 private MemberExpression GetExpr(string name)
 {
     return(EBuilder.MemberAccess(null, _type.FieldOrProperty(name)));
 }
示例#4
0
 protected override DynamicEBuilder Invoke(Expression[] args)
 {
     return(EBuilder.New(_type, args));
 }
示例#5
0
 private IndexExpression GetIndexExpr(Expression[] index)
 {
     return(EBuilder.Index(_type, index));
 }
示例#6
0
 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)));
 }