public static void UseAutoController <T>(
            this IApplicationBuilder appBuilder,
            string routePrefix,
            bool useLogging,
            DatabaseTypes databaseType,
            string connectionString,
            InteractingType?interactingType,
            string authentificationPath,
            string accessDeniedPath,
            JsonSerializerOptions jsonOptions    = null,
            string DefaultGetAction              = "Index",
            string DefaultGetCountAction         = "Count",
            string DefaultPostAction             = "Save",
            string DefaultDeleteAction           = "Delete",
            string DefaultFilterParameter        = "filter",
            string DefaultSortParameter          = "sort",
            string DefaultSortDirectionParameter = "sortdirection",
            string DefaultPageParameter          = "page",
            string DefaultItemsPerPageParameter  = "size",
            string DefaultUpdateAction           = "Update"
            ) where T : DbContext
        {
            if (appBuilder == null)
            {
                throw new ArgumentNullException(nameof(appBuilder));
            }
            var logger = GetOrCreateLogger(appBuilder, LogCategoryName);
            AutoRouterService <T> autoRouter = GetAutoRouterService <T>(appBuilder);

            if (useLogging)
            {
                autoRouter.AttachToLogger(logger);
            }
            autoRouter.GetAutoControllers(
                routePrefix,
                databaseType,
                connectionString,
                interactingType,
                authentificationPath,
                accessDeniedPath,
                jsonOptions,
                DefaultGetAction,
                DefaultGetCountAction,
                DefaultPostAction,
                DefaultDeleteAction,
                DefaultFilterParameter,
                DefaultSortParameter,
                DefaultSortDirectionParameter,
                DefaultPageParameter,
                DefaultItemsPerPageParameter,
                DefaultUpdateAction);
            foreach (var route in autoRouter.Autoroutes)
            {
                AddRoute(appBuilder, route.Key, route.Value);
            }
        }
        /// <summary>
        /// Adds AutoController as singletone service and register it in Dependency Injection
        ///
        /// </summary>
        /// <typeparam name="T">The type of your DBContext/>.</typeparam>
        /// <param name="services">The <see cref="IServiceCollection"/>.</param>
        /// <param name="dbType">The type of Database</param>
        /// <param name="connString">Connection string</param>
        /// <param name="DbContextBeforeSaveChangesMethod">Method of DbContext to execute it before save data</param>
        /// <param name="DbContextFactory">Custom DbContextFactory</param>
        public static void AddAutoController <T>(this IServiceCollection services, DatabaseTypes dbType, string connString, MethodInfo DbContextBeforeSaveChangesMethod = null, Func <T> DbContextFactory = null) where T : DbContext
        {
            AutoRouterService <T> .SetStaticParams(dbType, connString, DbContextBeforeSaveChangesMethod, DbContextFactory);

            services.AddSingleton(typeof(AutoRouterService <T>));
        }