public void AddingItemsDoesNotTriggerResolve(bool doubleAdd)
        {
            var containerMock = new Mock <IServiceProvider>();

            var cache = new TypedInstanceCache <MyType>(containerMock.Object);

            var type1 = new MyType();
            var type2 = new MyType();

            cache.Add(type1);

            var result = cache.Get();

            Assert.Equal(type1, result.First());

            if (doubleAdd)
            {
                cache.Add(type2);

                result = cache.Get();

                Assert.Equal(type2, result.First());
            }

            Assert.True(result.Count == 1);

            containerMock.Verify(c => c.GetService(It.Is <Type>(t => t == typeof(MyType))), Times.Never());
        }
        public void AddingItemTypeDoesTriggerResolve()
        {
            var type1 = new MyType();

            Services.AddSingleton(type1);

            var cache = new TypedInstanceCache <MyType>(Services.BuildServiceProvider());

            cache.Add(typeof(MyType));

            var result = cache.Get();

            Assert.Equal(type1, result.First());

            Assert.True(result.Count == 1);
        }
        public async Task <IValidationResult> ValidateAsync(object @object, CancellationToken cancellationToken = default)
        {
            var errors = (await Task.WhenAll(validators.Get()
                                             .Select(async v => await v.ValidateAsync(new ValidationContext <object>(@object), cancellationToken))))
                         .SelectMany(r => r.Errors)
                         .ToList();

            if (errors.Any())
            {
                return(FluentValidationsResult.Failure(errors));
            }
            else
            {
                return(FluentValidationsResult.Succes());
            }
        }