예제 #1
0
        /// <summary>
        /// Gets the current validator
        /// </summary>
        internal AbstractValidator <T> GetValidator(ServiceProviderDelegate sp)
        {
            if (sp == null)
            {
                throw new ArgumentNullException(nameof(sp));
            }
            var validator = new InlineValidator <T>();

            _tracking.ForEach(cfg => cfg.Invoke(sp, validator));
            return(validator);
        }
예제 #2
0
        protected static THandler GetHandler <THandler>(ServiceProviderDelegate serviceProvider)
        {
            THandler handler;

            try
            {
                handler = serviceProvider.GetInstance <THandler>();
            }
            catch (Exception e)
            {
                throw new InvalidOperationException($"Error constructing handler for request of type {typeof(THandler)}. Register your handlers with the container.", e);
            }

            if (handler is null)
            {
                throw new InvalidOperationException($"Handler was not found for request of type {typeof(THandler)}. Register your handlers with the container.");
            }

            return(handler);
        }
예제 #3
0
        /// <summary>
        /// Validates the <see cref="ValidationContext{T}"/> asynchronous
        /// </summary>
        /// <param name="context">instance to validate</param>
        /// <param name="serviceProviderDelegate">the delegate to resolve instances from</param>
        /// <returns>
        /// Returns a <see cref="RuleResultCollection"/> indicating whether or not the validation was a success.
        /// If the validation was unsuccessful, the <see cref="RuleResultCollection"/> contains a list of error messages.
        /// </returns>
        /// <exception cref="ArgumentNullException">if <paramref name="context"/> or <paramref name="serviceProviderDelegate"/> is null</exception>
        internal async Task <RuleResultCollection> ValidateAsync(ValidationContext <T> context, ServiceProviderDelegate serviceProviderDelegate)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }
            if (serviceProviderDelegate == null)
            {
                throw new ArgumentNullException(nameof(serviceProviderDelegate));
            }

            var validator = GetValidator(serviceProviderDelegate);
            var result    = await validator.ValidateAsync(context).ConfigureAwait(false);

            return(RuleResultCollection.From(result.Errors.Select(r => new RuleResult(r.ErrorCode, r.ErrorMessage))));
        }
 public override TryOptionAsync <TResponse> Dispatch(IQuery <TResponse> query, ServiceProviderDelegate serviceProvider, CancellationToken token) =>
 GetHandler <IQueryHandler <TQuery, TResponse> >(serviceProvider).Execute((TQuery)query, token);
 public abstract TryOptionAsync <TResponse> Dispatch(IQuery <TResponse> query, ServiceProviderDelegate serviceProvider, CancellationToken token);
    public QueryDispatcher(ServiceProviderDelegate serviceProvider)
    {
        Guard.Against.Null(serviceProvider, nameof(serviceProvider));

        this.serviceProvider = serviceProvider;
    }
 public override TryAsync <TResponse> Dispatch(ICommand <TResponse> command, ServiceProviderDelegate serviceProvider, CancellationToken token) =>
 GetHandler <ICommandHandler <TCommand, TResponse> >(serviceProvider).Execute((TCommand)command, token);
 public abstract TryAsync <Unit> Dispatch(ICommand command, ServiceProviderDelegate serviceProvider, CancellationToken token);
 public static T GetInstance <T>(this ServiceProviderDelegate serviceProvider)
 => (T)serviceProvider(typeof(T));
 /// <summary>
 /// Initializes a new instance of the <see cref="FluentHybridRuleEngine{T}"/> class.
 /// </summary>
 public FluentHybridRuleEngine(RuleCollection <T> ruleCollection, ServiceProviderDelegate serviceProviderDelegate)
 {
     _ruleCollection          = ruleCollection ?? throw new ArgumentNullException(nameof(ruleCollection));
     _serviceProviderDelegate = serviceProviderDelegate ?? throw new ArgumentNullException(nameof(serviceProviderDelegate));
 }
예제 #11
0
 public override Result <TResponse> Dispatch(IQuerySync <TResponse> query, ServiceProviderDelegate serviceProvider) =>
 GetHandler <IQueryHandlerSync <TQuery, TResponse> >(serviceProvider).Execute((TQuery)query);
예제 #12
0
 public abstract Result <TResponse> Dispatch(IQuerySync <TResponse> query, ServiceProviderDelegate serviceProvider);
예제 #13
0
 public abstract Task <Result <TResponse> > Dispatch(IQuery <TResponse> query, ServiceProviderDelegate serviceProvider, CancellationToken token);