示例#1
0
        public CreationResult TryResolveDummyValue(Type typeOfDummy, LoopDetectingResolutionContext resolutionContext)
        {
            if (this.strategyCache.TryGetValue(typeOfDummy, out ResolveStrategy cachedStrategy))
            {
                return(cachedStrategy.TryCreateDummyValue(typeOfDummy, this, resolutionContext));
            }

            if (!resolutionContext.TryBeginToResolve(typeOfDummy))
            {
                return(CreationResult.FailedToCreateDummy(typeOfDummy, "Recursive dependency detected. Already resolving " + typeOfDummy + '.'));
            }

            var creationResult = this.TryResolveDummyValueWithAllAvailableStrategies(typeOfDummy, resolutionContext);

            if (creationResult.WasSuccessful)
            {
                resolutionContext.OnSuccessfulResolve(typeOfDummy);
            }

            return(creationResult);
        }
        public CreationResult CreateFake(
            Type typeOfFake,
            IProxyOptions proxyOptions,
            IDummyValueResolver resolver,
            LoopDetectingResolutionContext resolutionContext)
        {
            if (!resolutionContext.TryBeginToResolve(typeOfFake))
            {
                return(CreationResult.FailedToCreateFake(typeOfFake, "Recursive dependency detected. Already resolving " + typeOfFake + '.'));
            }

            var result = this.CreateFakeWithoutLoopDetection(
                typeOfFake,
                proxyOptions,
                resolver,
                resolutionContext);

            if (result.WasSuccessful)
            {
                resolutionContext.OnSuccessfulResolve(typeOfFake);
            }

            return(result);
        }