Exemplo n.º 1
0
        protected virtual IFollowingActionSearchConditionBuilder <TBuilder, TResult> Block(Action <TBuilder> builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            SearchConditionBlockItem <TResult> item = null;
            var exceptionIsThrown = false;

            _builderContexts.Push(_currentBuilderContext);
            try
            {
                _currentBuilderContext = null;
                builder(this as TBuilder);
                item = _currentBuilderContext != null?CreateBlockItem(_currentBuilderContext) : null;
            }
            catch
            {
                exceptionIsThrown = true;
                throw;
            }
            finally
            {
                _currentBuilderContext = _builderContexts.Pop();
                if (!exceptionIsThrown && item != null)
                {
                    CurrentBuilderContext.Add(item);
                }
            }

            return((TBuilder)this);
        }
Exemplo n.º 2
0
 protected abstract SearchConditionBlockItem <TResult> CreateBlockItem(SearchConditionBuilderContext <TResult> blockBuilderContext);
Exemplo n.º 3
0
 protected SearchConditionBlockItem(SearchConditionBuilderContext <TResult> blockBuilderContext)
 {
     BlockBuilderContext = blockBuilderContext ?? throw new ArgumentNullException(nameof(blockBuilderContext));
 }