/// <summary> /// Adds the body of another FluentMethodBuilder inside this one. /// </summary> public TThis Inline(FluentMethodBuilder action) { _CheckModifiable(); action._CheckThread(); if (action._parameters.Count > 0) { throw new ArgumentException("An action method should not have any parameters.", "actionMethod"); } action._modifiable = false; foreach (var pair in action._locals) { if (!_method._locals.ContainsKey(pair.Key)) { _method._locals.Add(pair.Key, pair.Value); } } foreach (var pair in action._sharedVariables) { if (!_method._sharedVariables.Contains(pair)) { _method._sharedVariables.Add(pair); } } _statements.Add(action.Body); return(_this); }
static void Main(string[] args) { string fileName = null; string line = null; StreamReader streamReader = null; var m = new FluentMethodBuilder(typeof(void)). AddParameter(() => fileName). AddLocal(() => streamReader). AddLocal(() => line). Body. Using(() => streamReader, () => new StreamReader(fileName)). Loop(). Assign(() => line, () => streamReader.ReadLine()). If(() => line == null). Break(). EndIf(). If(() => line.Length > 0). Do(() => Console.WriteLine(line)). EndIf(). EndLoop(). EndUsing(). EndBody(). Compile <Action <string> >(); }
internal FluentWhileBuilder(TParentBuilder parent, FluentMethodBuilder method, Expression condition) : base(parent, method) { _condition = condition; ContinueTarget = Expression.Label(); BreakTarget = Expression.Label(); }
internal FluentForBuilder(TParentBuilder parent, FluentMethodBuilder method, Expression initialization, Expression condition, Expression increment) : base(parent, method) { _initialization = initialization; _condition = condition; _increment = increment; ContinueTarget = Expression.Label(); BreakTarget = Expression.Label(); }
internal FluentLoopBuilder(TParentBuilder parent, FluentMethodBuilder method) : base(parent, method) { ContinueTarget = Expression.Label(); BreakTarget = Expression.Label(); }
internal FluentIfBuilder(TParentBuilder parent, FluentMethodBuilder method, Expression condition) : base(parent, method) { _condition = condition; }
internal FluentTryBuilder(TParentBuilder parent, FluentMethodBuilder method) : base(parent, method) { }
internal FluentBlockBuilder(TParentBuilder parent, FluentMethodBuilder method) { _this = (TThis)((object)this); _parent = parent; _method = method; }
internal FluentUsingBuilder(TParentBuilder parent, FluentMethodBuilder method, Expression usingVariable, Expression usingValue) : base(parent, method) { _usingVariable = usingVariable; _usingValue = usingValue; }