private ICommandHandler <TCommand, TCommandResult> GetSynchronousCommandHandler <TCommand, TCommandResult>() where TCommand : ICommand <TCommandResult> where TCommandResult : CommandResult { var handlerType = _commandHandlerFinder.FindHandlerForCommand <TCommand, TCommandResult>(); if (handlerType == null) { return(null); } return((ICommandHandler <TCommand, TCommandResult>)_serviceProvider.GetService(handlerType)); }
public ICommandHandler <TCommand> GetCommandHandler <TCommand>() { var commandTypeFullName = typeof(TCommand).FullName; var handler = _cache.GetValue <ICommandHandler <TCommand> >(commandTypeFullName, null); if (handler == null) { handler = _commandHandlerFinder.FindHandlerForCommand <TCommand>(); if (handler != null) { _cache.SetValue <ICommandHandler <TCommand> >(commandTypeFullName, handler); } } return(handler); }