コード例 #1
0
    public object Create(object request, ISpecimenContext context)
    {
        if (request is SeededRequest)
        {
            int currentDepth = -1;

            var requestsForCurrentThread = this.GetMonitoredRequestsForCurrentThread();

            if (requestsForCurrentThread.Count > 0)
            {
                currentDepth = requestsForCurrentThread.Max(x => x.Depth) + 1;
            }

            DepthSeededRequest depthResquest = new DepthSeededRequest(((SeededRequest)request).Request, ((SeededRequest)request).Seed, currentDepth);

            if (depthResquest.Depth >= this.GenerationDepth)
            {
                return(HandleGenerationDepthLimitRequest(request, depthResquest.Depth));
            }

            requestsForCurrentThread.Push(depthResquest);
            try
            {
                return(this.Builder.Create(request, context));
            }
            finally
            {
                requestsForCurrentThread.Pop();
            }
        }
        else
        {
            return(this.Builder.Create(request, context));
        }
    }
コード例 #2
0
            public object Create(object request, ISpecimenContext context)
            {
                if (!(request is SeededRequest seededRequest))
                {
                    return(_builder.Create(request, context));
                }

                var currentDepth = -1;

                var requestsForCurrentThread = GetMonitoredRequestsForCurrentThread();

                if (requestsForCurrentThread.Count > 0)
                {
                    currentDepth = requestsForCurrentThread.Max(x => x.Depth) + 1;
                }

                var depthRequest = new DepthSeededRequest(seededRequest.Request, seededRequest.Seed, currentDepth);

                if (depthRequest.Depth >= _generationDepth)
                {
                    return(new OmitSpecimen());
                }

                requestsForCurrentThread.Push(depthRequest);
                try
                {
                    return(_builder.Create(seededRequest, context));
                }
                finally
                {
                    requestsForCurrentThread.Pop();
                }
            }
コード例 #3
0
 public object Create(object request, ISpecimenContext context)
 {
     if (request is SeededRequest)
     {
         int currentDepth             = 0;
         var requestsForCurrentThread = GetMonitoredRequestsForCurrentThread();
         if (requestsForCurrentThread.Count > 0)
         {
             currentDepth = requestsForCurrentThread.Max(x => x.Depth) + 1;
         }
         DepthSeededRequest depthRequest = new DepthSeededRequest(((SeededRequest)request).Request, ((SeededRequest)request).Seed, currentDepth);
         if (depthRequest.Depth >= GenerationDepth)
         {
             var parentRequest = requestsForCurrentThread.Peek();
             depthRequest.MaxDepth = parentRequest.Depth + parentRequest.GenerationLevel;
             if (!(parentRequest.ContinueSeed && currentDepth < depthRequest.MaxDepth))
             {
                 return(HandleGenerationDepthLimitRequest(request, depthRequest.Depth));
             }
         }
         requestsForCurrentThread.Push(depthRequest);
         try
         {
             return(Builder.Create(request, context));
         }
         finally
         {
             requestsForCurrentThread.Pop();
         }
     }
     else
     {
         return(Builder.Create(request, context));
     }
 }