コード例 #1
0
        ///	<summary>
        ///		Adds support to Blazor for the Fluxor library
        ///	</summary>
        ///	<param name="serviceCollection">The service collection</param>
        ///	<param name="configure">A callback used to configure options</param>
        ///	<returns>The service collection</returns>
        ///	<example>
        ///		services.AddFluxor(options =&gt; options
        ///			.ScanAssemblies(typeof(Program).Assembly));
        ///	</example>
        public static IServiceCollection AddFluxor(
            this IServiceCollection serviceCollection,
            Action <FluxorOptions> configure = null)
        {
            // We only use an instance so middleware can create extensions to the Options
            var options = new FluxorOptions(serviceCollection);

            configure?.Invoke(options);

            // Register all middleware types with dependency injection
            foreach (Type middlewareType in options.MiddlewareTypes)
            {
                serviceCollection.AddScoped(middlewareType);
            }

            IEnumerable <AssemblyScanSettings> scanIncludeList = options.MiddlewareTypes
                                                                 .Select(t => new AssemblyScanSettings(t.Assembly, t.Namespace));

            DependencyScanner.Scan(
                options: options,
                serviceCollection: serviceCollection,
                assembliesToScan: options.AssembliesToScan,
                scanIncludeList: scanIncludeList);
            serviceCollection.AddScoped(typeof(IState <>), typeof(State <>));

            return(serviceCollection);
        }
コード例 #2
0
        public static FluxorOptions UsePersist(this FluxorOptions options, Action <PersistMiddlewareOptions> persistMiddlewareOptions = null)
        {
            var middlewareOptions = new PersistMiddlewareOptions();

            persistMiddlewareOptions?.Invoke(middlewareOptions);
            options.AddMiddleware <PersistMiddleware>();
            options.Services.AddScoped(_ => middlewareOptions);
            return(options);
        }
コード例 #3
0
        /// <summary>
        /// Enables interaction with the brower tool Redux Dev Tools
        /// </summary>
        /// <param name="options">The current options</param>
        /// <param name="updateReduxOptions">An action to update the options</param>
        /// <returns></returns>
        public static FluxorOptions UseReduxDevTools(
            this FluxorOptions options,
            Action <ReduxDevToolsMiddlewareOptions> updateReduxOptions = null)
        {
            var reduxOptions = new ReduxDevToolsMiddlewareOptions(options);

            updateReduxOptions?.Invoke(reduxOptions);

            options.AddMiddleware <ReduxDevToolsMiddleware>();
            options.Services.AddScoped <ReduxDevToolsInterop>();
            options.Services.AddScoped(_ => reduxOptions);
            options.UseRouting();
            return(options);
        }
コード例 #4
0
 public ReduxDevToolsMiddlewareOptions(FluxorOptions fluxorOptions)
 {
     FluxorOptions = fluxorOptions;
 }
コード例 #5
0
 public static FluxorOptions UseRouting(this FluxorOptions options)
 {
     options.AddMiddleware <RoutingMiddleware>();
     return(options);
 }