public Inferrer(IConnectionSettingsValues connectionSettings)
        {
            connectionSettings.ThrowIfNull(nameof(connectionSettings));
            _connectionSettings  = connectionSettings;
            IdResolver           = new IdResolver(connectionSettings);
            IndexNameResolver    = new IndexNameResolver(connectionSettings);
            RelationNameResolver = new RelationNameResolver(connectionSettings);
            FieldResolver        = new FieldResolver(connectionSettings);
            RoutingResolver      = new RoutingResolver(connectionSettings, IdResolver);

            CreateMultiHitDelegates =
                new ConcurrentDictionary <Type,
                                          Action <MultiGetResponseFormatter.MultiHitTuple, IJsonFormatterResolver, ICollection <IMultiGetHit <object> > > >();
            CreateSearchResponseDelegates =
                new ConcurrentDictionary <Type,
                                          Action <MultiSearchResponseFormatter.SearchHitTuple, IJsonFormatterResolver, IDictionary <string, IResponse> > >();
        }
 public string IndexName(IndexName index) => IndexNameResolver.Resolve(index);
 public string IndexName <T>() where T : class => IndexNameResolver.Resolve <T>();