コード例 #1
0
        /// <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);
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: jmptrader/Creek
        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> >();
        }
コード例 #3
0
 internal FluentWhileBuilder(TParentBuilder parent, FluentMethodBuilder method, Expression condition) :
     base(parent, method)
 {
     _condition     = condition;
     ContinueTarget = Expression.Label();
     BreakTarget    = Expression.Label();
 }
コード例 #4
0
 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();
 }
コード例 #5
0
ファイル: FluentLoopBuilder.cs プロジェクト: rajeshwarn/Creek
 internal FluentLoopBuilder(TParentBuilder parent, FluentMethodBuilder method) :
     base(parent, method)
 {
     ContinueTarget = Expression.Label();
     BreakTarget    = Expression.Label();
 }
コード例 #6
0
ファイル: FluentIfBuilder.cs プロジェクト: rajeshwarn/Creek
 internal FluentIfBuilder(TParentBuilder parent, FluentMethodBuilder method, Expression condition) :
     base(parent, method)
 {
     _condition = condition;
 }
コード例 #7
0
ファイル: FluentTryBuilder.cs プロジェクト: rajeshwarn/Creek
 internal FluentTryBuilder(TParentBuilder parent, FluentMethodBuilder method) :
     base(parent, method)
 {
 }
コード例 #8
0
 internal FluentBlockBuilder(TParentBuilder parent, FluentMethodBuilder method)
 {
     _this   = (TThis)((object)this);
     _parent = parent;
     _method = method;
 }
コード例 #9
0
 internal FluentUsingBuilder(TParentBuilder parent, FluentMethodBuilder method, Expression usingVariable, Expression usingValue) :
     base(parent, method)
 {
     _usingVariable = usingVariable;
     _usingValue    = usingValue;
 }