public System.Linq.Expressions.Expression GetConstructorExpression() { System.Linq.Expressions.ConstantExpression value = System.Linq.Expressions.Expression.Constant(this.Value, typeof(double)); System.Linq.Expressions.ConstantExpression units = System.Linq.Expressions.Expression.Constant(this.Units, typeof(PageUnits)); System.Linq.Expressions.NewExpression ctor = System.Linq.Expressions.Expression.New(ctorRef, value, units); return(ctor); }
public static void CreateMemberInitExpression() { System.Linq.Expressions.NewExpression newAnimal = System.Linq.Expressions.Expression.New(typeof(Animal)); System.Reflection.MemberInfo speciesMember = typeof(Animal).GetMember("Species")[0]; System.Reflection.MemberInfo ageMember = typeof(Animal).GetMember("Age")[0]; // Create a MemberBinding object for each member // that you want to initialize. System.Linq.Expressions.MemberBinding speciesMemberBinding = System.Linq.Expressions.Expression.Bind( speciesMember, System.Linq.Expressions.Expression.Constant("horse")); System.Linq.Expressions.MemberBinding ageMemberBinding = System.Linq.Expressions.Expression.Bind( ageMember, System.Linq.Expressions.Expression.Constant(12)); // Create a MemberInitExpression that represents initializing // two members of the 'Animal' class. System.Linq.Expressions.MemberInitExpression memberInitExpression = System.Linq.Expressions.Expression.MemberInit( newAnimal, speciesMemberBinding, ageMemberBinding); Console.WriteLine(memberInitExpression.ToString()); // This code produces the following output: // // new Animal() {Species = "horse", Age = 12} }
public ListInitExpression Update(System.Linq.Expressions.NewExpression newExpression, IEnumerable <ElementInit> initializers) { if ((newExpression == this.NewExpression) && (initializers == this.Initializers)) { return(this); } return(Expression.ListInit(newExpression, initializers)); }
public MemberInitExpression Update(System.Linq.Expressions.NewExpression newExpression, IEnumerable <MemberBinding> bindings) { if ((newExpression == this.NewExpression) && (bindings == this.Bindings)) { return(this); } return(Expression.MemberInit(newExpression, bindings)); }
static void New() { // <Snippet10> // Create a NewExpression that represents constructing // a new instance of Dictionary<int, string>. System.Linq.Expressions.NewExpression newDictionaryExpression = System.Linq.Expressions.Expression.New(typeof(Dictionary <int, string>)); Console.WriteLine(newDictionaryExpression.ToString()); // This code produces the following output: // // new Dictionary`2() // </Snippet10> }
static void ListInit() { // <Snippet7> string tree1 = "maple"; string tree2 = "oak"; System.Reflection.MethodInfo addMethod = typeof(Dictionary <int, string>).GetMethod("Add"); // Create two ElementInit objects that represent the // two key-value pairs to add to the Dictionary. System.Linq.Expressions.ElementInit elementInit1 = System.Linq.Expressions.Expression.ElementInit( addMethod, System.Linq.Expressions.Expression.Constant(tree1.Length), System.Linq.Expressions.Expression.Constant(tree1)); System.Linq.Expressions.ElementInit elementInit2 = System.Linq.Expressions.Expression.ElementInit( addMethod, System.Linq.Expressions.Expression.Constant(tree2.Length), System.Linq.Expressions.Expression.Constant(tree2)); // Create a NewExpression that represents constructing // a new instance of Dictionary<int, string>. System.Linq.Expressions.NewExpression newDictionaryExpression = System.Linq.Expressions.Expression.New(typeof(Dictionary <int, string>)); // Create a ListInitExpression that represents initializing // a new Dictionary<> instance with two key-value pairs. System.Linq.Expressions.ListInitExpression listInitExpression = System.Linq.Expressions.Expression.ListInit( newDictionaryExpression, elementInit1, elementInit2); Console.WriteLine(listInitExpression.ToString()); // This code produces the following output: // // new Dictionary`2() {Void Add(Int32, System.String)(5,"maple"), // Void Add(Int32, System.String)(3,"oak")} // </Snippet7> }
protected override System.Linq.Expressions.NewExpression VisitNew(System.Linq.Expressions.NewExpression nex) { int ndx = 0; foreach (System.Linq.Expressions.Expression exp in nex.Arguments) { this._foundSpecialMethod = false; this._foundAs = true;//New的方式都要加的 _strSql.Append(","); _ParamSql.Append(","); this.Visit(exp); if (this.ExcuteType == DMSExcuteType.SELECT && this._CurrentMemberInfo != null) { MemberInfo memberInfo = nex.Members[ndx]; string text = GetMemberInfoName(memberInfo.Name); if (text != this._CurrentMemberInfo.Name || this._foundSpecialMethod == true) { //增加As this._strSql.Append(this.Provider.As); if (this.SplitExpression.TableMapping.TokenFlag == true) { text = this.Provider.BuildColumnName(text); } this._strSql.Append(text); this._ParamSql.Append(text); } else { if (this.SplitExpression.TableMapping.TokenFlag == true) { text = this.Provider.BuildColumnName(text); } this._ParamSql.Append(text); } } ndx++; } return(nex); }
internal ListInitExpression(System.Linq.Expressions.NewExpression newExpression, ReadOnlyCollection <ElementInit> initializers) { this._newExpression = newExpression; this._initializers = initializers; }
internal ListInitExpression(System.Linq.Expressions.NewExpression newExpression, ReadOnlyCollection<ElementInit> initializers) { this._newExpression = newExpression; this._initializers = initializers; }
internal MemberInitExpression(System.Linq.Expressions.NewExpression newExpression, ReadOnlyCollection <MemberBinding> bindings) { this._newExpression = newExpression; this._bindings = bindings; }
internal MemberInitExpression(System.Linq.Expressions.NewExpression newExpression, ReadOnlyCollection<MemberBinding> bindings) { this._newExpression = newExpression; this._bindings = bindings; }
protected override void PVisitNew(System.Linq.Expressions.NewExpression nex) { Push(walkerFactory.FromConstrucorNode(nex)); base.PVisitNew(nex); }