public ObjectInitializersWithLinqExpressions(IEnumerable <MemberBinding> bindings)
        {
            List <IReadOnlyList <ILinqExpression> > elements = new List <IReadOnlyList <ILinqExpression> >();
            Dictionary <string, ObjectInitializersWithLinqExpressions> initializers =
                new Dictionary <string, ObjectInitializersWithLinqExpressions>();
            Dictionary <string, ILinqExpression> members = new Dictionary <string, ILinqExpression>();

            foreach (MemberBinding binding in bindings)
            {
                switch (binding.BindingType)
                {
                case MemberBindingType.Assignment:
                    members.Add(
                        binding.Member.Name,
                        LinqExpressionBuilder.BuildExpression(((MemberAssignment)binding).Expression));
                    break;

                case MemberBindingType.ListBinding:
                    elements.AddRange(LinqExpressionBuilder.BuildExpressions(((MemberListBinding)binding).Initializers));
                    break;

                case MemberBindingType.MemberBinding:
                    initializers.Add(
                        binding.Member.Name,
                        new ObjectInitializersWithLinqExpressions(((MemberMemberBinding)binding).Bindings));
                    break;
                }
            }

            this.members      = members;
            this.elements     = elements;
            this.initializers = initializers;
        }
Ejemplo n.º 2
0
 public DynamicMethodCallExpressionWithLinqExpressions(DynamicExpression expression)
 {
     LinqExpression = expression;
     //this.expression = LinqExpressionBuilder.BuildExpression(expression.);
     parameterExpressions = LinqExpressionBuilder.BuildExpressions(expression.Arguments);
     throw new NotImplementedException();
 }
        public NewArrayExpressionWithLinqExpressions(NewArrayExpression expression)
        {
            Expression = expression;
            dimensions = new List <int>();
            for (Type arrayType = expression.Type; arrayType.IsArray; arrayType = arrayType.GetElementType())
            {
                dimensions.Add(arrayType.GetArrayRank());
            }

            elementType            = TypeReferenceWithReflectionFactory.CreateReference(expression.Type.GetElementType());
            initialSizeExpressions = LinqExpressionBuilder.BuildExpressions(expression.Expressions);
        }
Ejemplo n.º 4
0
 public ListInitializerExpressionWithLinqExpressions(ListInitExpression expression)
 {
     Expression           = expression;
     createListExpression = LinqExpressionBuilder.BuildExpression(expression.NewExpression) as ICreateListLinqExpression;
     initialValues        = LinqExpressionBuilder.BuildExpressions(expression.Initializers).ToArray();
 }
 public DelegateMethodCallExpressionWithLinqExpressions(InvocationExpression expression)
 {
     LinqExpression       = expression;
     this.expression      = LinqExpressionBuilder.BuildExpression(expression.Expression);
     parameterExpressions = LinqExpressionBuilder.BuildExpressions(expression.Arguments);
 }
 public NewExpressionWithLinqExpressions(NewExpression expression)
 {
     Expression = expression;
     parameters = LinqExpressionBuilder.BuildExpressions(expression.Arguments);
     type       = TypeReferenceWithReflectionFactory.CreateReference(expression.Constructor.DeclaringType);
 }
 public SwitchCaseStatementWithLinqExpressions(SwitchCase statement)
 {
     Statement  = statement;
     matches    = LinqExpressionBuilder.BuildExpressions(statement.TestValues);
     statements = LinqStatementBuilder.BuildStatements(statement.Body);
 }
Ejemplo n.º 8
0
 public ArrayIndexExpressionWithLinqExpressions(IndexExpression expression)
 {
     Expression = expression;
     array      = LinqExpressionBuilder.BuildExpression(expression.Object);
     indexes    = LinqExpressionBuilder.BuildExpressions(expression.Arguments);
 }
Ejemplo n.º 9
0
 public MethodCallExpressionWithLinqExpressions(MethodCallExpression expression)
 {
     LinqExpression       = expression;
     this.expression      = LinqExpressionBuilder.BuildExpression(expression.Object);
     parameterExpressions = LinqExpressionBuilder.BuildExpressions(expression.Arguments);
 }