Example #1
0
        /// <summary>
        /// 开始执行框架初始化
        /// </summary>
        /// <param name="iocBuilder">依赖注入构建器</param>
        public void Initialize(IIocBuilder iocBuilder)
        {
            iocBuilder.CheckNotNull("iocBuilder");

            JceConfig config = JceConfig.Instance;

            //依赖注入初始化
            IServiceProvider provider = iocBuilder.Build();

            //对象映射功能初始化

            //日志功能初始化
            IBasicLoggingInitializer loggingInitializer = provider.GetService <IBasicLoggingInitializer>();

            if (!_basicLoggingInitialized && loggingInitializer != null)
            {
                loggingInitializer.Initialize(config.LoggingConfig);
                _basicLoggingInitialized = true;
            }

            //数据库初始化

            //实体信息初始化

            //功能信息初始化
        }
Example #2
0
        public static void RegisterRepositories(Type dbContextType, IIocBuilder builder)
        {
            AutoRepositoryTypesAttribute autoRepositoryAttr = dbContextType.GetSingleAttributeOrNull <AutoRepositoryTypesAttribute>() ??
                                                              EfAutoRepositoryTypes.Default;

            foreach (EntityTypeInfo entityTypeInfo in DbContextHelper.GetEntityTypeInfos(dbContextType))
            {
                Type implType;
                Type primaryKeyType = EntityHelper.GetPrimaryKeyType(entityTypeInfo.EntityType);
                if (primaryKeyType == typeof(int))
                {
                    Type genericRepositoryType = autoRepositoryAttr.RepositoryInterface.MakeGenericType(entityTypeInfo.EntityType);

                    implType = autoRepositoryAttr.RepositoryImplementation.GetGenericArguments().Length == 1
                        ? autoRepositoryAttr.RepositoryImplementation.MakeGenericType(entityTypeInfo.EntityType)
                        : autoRepositoryAttr.RepositoryImplementation.MakeGenericType(entityTypeInfo.DeclaringType, entityTypeInfo.EntityType);

                    builder.RegisterServices(r => r.UseBuilder(cb => cb.RegisterType(implType).As(genericRepositoryType).AsImplementedInterfaces().InjectPropertiesAsAutowired()));
                }
                else
                {
                    Type genericRepositoryTypeWithPrimaryKey = autoRepositoryAttr.RepositoryInterfaceWithPrimaryKey.MakeGenericType(entityTypeInfo.EntityType, primaryKeyType);

                    implType = autoRepositoryAttr.RepositoryImplementationWithPrimaryKey.GetGenericArguments().Length == 2
                        ? autoRepositoryAttr.RepositoryImplementationWithPrimaryKey.MakeGenericType(entityTypeInfo.EntityType, primaryKeyType)
                        : autoRepositoryAttr.RepositoryImplementationWithPrimaryKey.MakeGenericType(entityTypeInfo.DeclaringType, entityTypeInfo.EntityType, primaryKeyType);

                    builder.RegisterServices(r => r.UseBuilder(cb => cb.RegisterType(implType).As(genericRepositoryTypeWithPrimaryKey).AsImplementedInterfaces().InjectPropertiesAsAutowired()));
                }
            }
        }
Example #3
0
        public void Load(IIocBuilder builder)
        {
            builder.RegisterType <Core.Configurations.IConfigurationProvider, Configurations.ModuleConfigurationProvider>();
            builder.RegisterType <Core.Localization.ILocalizer, JsonLocalizer>(LifeTimeScope.Singleton, autoWire: true,
                                                                               getConstructorParameters: (ctx) =>
            {
                Dictionary <string, object> paras = new Dictionary <string, object>();
                paras.Add("paths", "Localization, Modules/*/Localization");
                return(paras);
            });

            builder.RegisterType <IObjectProvider <IEnumerable <DAF.Web.Menu.MenuGroup> >, ModuleMenuGroupProvider>(LifeTimeScope.Singleton, autoWire: true,
                                                                                                                    getConstructorParameters: (ctx) =>
            {
                Dictionary <string, object> paras = new Dictionary <string, object>();
                paras.Add("paths", "App_Data, Modules/*/App_Data");
                paras.Add("fileName", "menu.js");
                return(paras);
            });

            builder.RegisterType <IAppSettingProvider, AppSettingProvider>(LifeTimeScope.Singleton);
            builder.RegisterType <IBasicDataProvider, BasicDataProvider>(LifeTimeScope.Singleton);
            builder.RegisterType <ICategoryProvider, CategoryProvider>(LifeTimeScope.Singleton);
            builder.RegisterType <IContentProvider, ContentProvider>(LifeTimeScope.Singleton);
            builder.RegisterType <IWebSiteProvider, WebSiteProvider>(LifeTimeScope.Singleton);
            builder.RegisterType <IPageTemplateProvider, PageTemplateProvider>(LifeTimeScope.Singleton);
            builder.RegisterType <IMenuProvider, MenuProvider>(LifeTimeScope.Singleton);
            builder.RegisterType <IUserGroupProvider, UserGroupProvider>(LifeTimeScope.Singleton);
            builder.RegisterType <ITemplateTypeProvider, TemplateTypeProvider>(LifeTimeScope.Singleton);
            builder.RegisterType <IWidgetTypeProvider, WidgetTypeProvider>(LifeTimeScope.Singleton);
            builder.RegisterType <IPageProvider, PageProvider>(LifeTimeScope.Singleton);

            builder.RegisterType <IAppEventHandler, CmsAppEventHandler>();
            builder.RegisterType <DAF.SSO.Client.IDefaultSessionProvider, CmsDefaultSessionProvider>(LifeTimeScope.Singleton);
        }
Example #4
0
        public void Load(IIocBuilder builder)
        {
            builder.RegisterType<Core.Configurations.IConfigurationProvider, Configurations.ModuleConfigurationProvider>();
            builder.RegisterType<Core.Localization.ILocalizer, JsonLocalizer>(LifeTimeScope.Singleton, autoWire: true,
                getConstructorParameters: (ctx) =>
                    {
                        Dictionary<string, object> paras = new Dictionary<string, object>();
                        paras.Add("paths", "Localization, Modules/*/Localization");
                        return paras;
                    });

            builder.RegisterType<IObjectProvider<IEnumerable<DAF.Web.Menu.MenuGroup>>, ModuleMenuGroupProvider>(LifeTimeScope.Singleton, autoWire: true,
                getConstructorParameters: (ctx) =>
                    {
                        Dictionary<string, object> paras = new Dictionary<string, object>();
                        paras.Add("paths", "App_Data, Modules/*/App_Data");
                        paras.Add("fileName", "menu.js");
                        return paras;
                    });

            builder.RegisterType<IAppSettingProvider, AppSettingProvider>(LifeTimeScope.Singleton);
            builder.RegisterType<IBasicDataProvider, BasicDataProvider>(LifeTimeScope.Singleton);
            builder.RegisterType<ICategoryProvider, CategoryProvider>(LifeTimeScope.Singleton);
            builder.RegisterType<IContentProvider, ContentProvider>(LifeTimeScope.Singleton);
            builder.RegisterType<IWebSiteProvider, WebSiteProvider>(LifeTimeScope.Singleton);
            builder.RegisterType<IPageTemplateProvider, PageTemplateProvider>(LifeTimeScope.Singleton);
            builder.RegisterType<IMenuProvider, MenuProvider>(LifeTimeScope.Singleton);
            builder.RegisterType<IUserGroupProvider, UserGroupProvider>(LifeTimeScope.Singleton);
            builder.RegisterType<ITemplateTypeProvider, TemplateTypeProvider>(LifeTimeScope.Singleton);
            builder.RegisterType<IWidgetTypeProvider, WidgetTypeProvider>(LifeTimeScope.Singleton);
            builder.RegisterType<IPageProvider, PageProvider>(LifeTimeScope.Singleton);

            builder.RegisterType<IAppEventHandler, CmsAppEventHandler>();
            builder.RegisterType<DAF.SSO.Client.IDefaultSessionProvider, CmsDefaultSessionProvider>(LifeTimeScope.Singleton);
        }
Example #5
0
        public static IIocBuilder UseVirgo(this IIocBuilder builder)
        {
            var assembly = typeof(VirgoExtensions).Assembly;

            builder.RegisterServices(r => r.RegisterAssemblyByConvention(assembly));
            return(builder);
        }
Example #6
0
        public void Register(IIocBuilder builder, Type type)
        {
            var docAttr = type.GetCustomAttribute <DocumentAttribute>(true);

            if (docAttr != null)
            {
                if (string.IsNullOrEmpty(docAttr.TypeName))
                {
                    docAttr.TypeName = type.Name;
                }
                if (docAttr.ObjectType == null)
                {
                    docAttr.ObjectType = type;
                }
                if (docAttr.DocumentBuilder == null)
                {
                    docAttr.DocumentBuilder = typeof(AttributeDocumentBuilder);
                }
                if (docAttr.IndexPathBuilder == null)
                {
                    docAttr.IndexPathBuilder = typeof(LocaleDateTimeIndexPathBuilder);
                }
                if (docAttr.FacetFieldNameProvider == null)
                {
                    docAttr.FacetFieldNameProvider = typeof(LocaleFacetFieldNameProvider);
                }
                AttributedTypes.SearchTypes.Add(type.Name, docAttr);
            }
        }
Example #7
0
        public void Load(IIocBuilder builder)
        {
            builder.RegisterType <IObjectProvider <SSOServer>, WebJsonFileObjectProvider <SSOServer> >(LifeTimeScope.Singleton,
                                                                                                       getConstructorParameters: (ctx) =>
            {
                Dictionary <string, object> paras = new Dictionary <string, object>();
                paras.Add("jsonFile", "~/App_Data/sso_server.js");
                return(paras);
            });

            builder.RegisterType <IObjectProvider <SSOClient[]>, WebJsonFileObjectProvider <SSOClient[]> >(LifeTimeScope.Singleton,
                                                                                                           getConstructorParameters: (ctx) =>
            {
                Dictionary <string, object> paras = new Dictionary <string, object>();
                paras.Add("jsonFile", "~/App_Data/sso_clients.js");
                return(paras);
            });

            builder.RegisterType <IObjectProvider <SSOClient>, WebJsonFileObjectProvider <SSOClient> >(LifeTimeScope.Singleton,
                                                                                                       getConstructorParameters: (ctx) =>
            {
                Dictionary <string, object> paras = new Dictionary <string, object>();
                paras.Add("jsonFile", "~/App_Data/sso_client.js");
                return(paras);
            });

            builder.RegisterType <ISSOConfiguration, DefaultSSOConfiguration>(LifeTimeScope.Singleton);
            builder.RegisterType <Client.ISSOClientProvider, SSOClientProvider>(LifeTimeScope.Singleton);
            builder.RegisterType <Client.IDefaultSessionProvider, Client.DefaultSessionProvider>(LifeTimeScope.Singleton);
        }
        public static IIocBuilder UseStoveRabbitMQ(
            [NotNull] this IIocBuilder builder,
            [NotNull] Func <IStoveRabbitMQConfiguration, IStoveRabbitMQConfiguration> rabbitMQConfigurer)
        {
            Check.NotNull(rabbitMQConfigurer, nameof(rabbitMQConfigurer));

            builder
            .RegisterServices(r =>
            {
                r.RegisterAssemblyByConvention(typeof(StoveRabbitMQRegistrationExtensions).GetAssembly());
                r.Register <IStoveRabbitMQConfiguration, StoveRabbitMQConfiguration>(Lifetime.Singleton);
                r.Register <IMessageBus, StoveRabbitMQMessageBus>();
                r.Register(ctx => rabbitMQConfigurer);
            });

            builder.RegisterServices(r => r.UseBuilder(cb =>
            {
                cb.Register(ctx =>
                {
                    var configuration = ctx.Resolve <IStoveRabbitMQConfiguration>();

                    IBusControl busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
                    {
                        EnsureStoveDefaults(cfg, configuration);
                    });

                    return(busControl);
                }).SingleInstance()
                .As <IBusControl>()
                .As <IBus>();
            }));

            return(builder);
        }
Example #9
0
 /// <summary>
 ///     Uses the stove migrator.
 /// </summary>
 /// <param name="builder">The builder.</param>
 /// <returns></returns>
 public static IIocBuilder UseStoveMigrator(this IIocBuilder builder)
 {
     return(builder.RegisterServices(r => r.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()))
            .UseStoveEntityFramework()
            .UseStoveDbContextEfTransactionStrategy()
            .UseStoveTypedConnectionStringResolver());
 }
 public static IIocBuilder UseStoveMapster([NotNull] this IIocBuilder builder)
 {
     return(builder
            .RegisterServices(r => r.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()))
            .RegisterServices(r => r.Register <IStoveMapsterConfiguration, StoveMapsterConfiguration>(Lifetime.Singleton))
            .RegisterServices(r => r.Register <IObjectMapper, MapsterObjectMapper>(Lifetime.Singleton)));
 }
Example #11
0
 public static IIocBuilder UseStoveNLog(this IIocBuilder builder)
 {
     builder.RegisterServices(r => r.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()));
     builder.RegisterServices(r => r.Register <ILogger>(context => new LoggerAdapter(LogManager.GetCurrentClassLogger()), Lifetime.Singleton));
     builder.RegisterServices(r => r.UseBuilder(containerBuilder => containerBuilder.RegisterModule <NLogRegistrarModule>()));
     return(builder);
 }
Example #12
0
        private static void AutoRegisterRepositories(IIocBuilder builder)
        {
            builder.RegisterServices(r => r.UseBuilder(cb =>
            {
                if (!cb.Properties.ContainsKey(StoveConsts.OrmRegistrarContextKey))
                {
                    throw new StoveInitializationException("Dapper registration should be after EntityFramework or NHibernate registration" +
                                                           " use StoveEntityFramework() or StoveNHibernate() registration methods before use StoveDapper().");
                }

                var ormRegistrars = cb.Properties[StoveConsts.OrmRegistrarContextKey].As <IList <ISecondaryOrmRegistrar> >();

                ormRegistrars.ForEach(registrar =>
                {
                    switch (registrar.OrmContextKey)
                    {
                    case StoveConsts.Orms.EntityFramework:
                        registrar.RegisterRepositories(EfBasedDapperAutoRepositoryTypes.Default);
                        break;

                    case StoveConsts.Orms.NHibernate:
                        registrar.RegisterRepositories(NhBasedDapperAutoRepositoryTypes.Default);
                        break;
                    }
                });
            }));
        }
        /// <summary>
        ///     Uses the stove entity framework core.
        /// </summary>
        /// <param name="builder">The builder.</param>
        /// <param name="configurerAction"></param>
        /// <returns></returns>
        public static IIocBuilder UseStoveEntityFrameworkCore(
            this IIocBuilder builder,
            Func <IStoveEfCoreConfiguration, IStoveEfCoreConfiguration> configurerAction = null)
        {
            return(builder
                   .RegisterServices(r =>
            {
                var ormRegistrars = new List <ISecondaryOrmRegistrar>();
                r.OnRegistering += (sender, args) =>
                {
                    if (typeof(StoveDbContext).GetTypeInfo().IsAssignableFrom(args.ImplementationType))
                    {
                        EfCoreRepositoryRegistrar.RegisterRepositories(args.ImplementationType, builder);
                        ormRegistrars.Add(new EfCoreBasedSecondaryOrmRegistrar(builder, args.ImplementationType, EfCoreDbContextEntityFinder.GetEntityTypeInfos, EntityHelper.GetPrimaryKeyType));
                        args.ContainerBuilder.Properties[StoveConsts.OrmRegistrarContextKey] = ormRegistrars;
                    }
                };

                r.RegisterAssemblyByConvention(typeof(StoveEntityFrameworkCoreRegistrationExtensions).GetAssembly());
                r.RegisterGeneric(typeof(IDbContextProvider <>), typeof(UnitOfWorkDbContextProvider <>));
                r.Register <IUnitOfWorkDefaultOptions, UnitOfWorkDefaultOptions>(Lifetime.Singleton);
                r.Register <IUnitOfWorkFilterExecuter, NullUnitOfWorkFilterExecuter>();

                if (configurerAction != null)
                {
                    r.Register(ctx => configurerAction);
                }
            })
                   .UseStoveEntityFrameworkCommon());
        }
Example #14
0
 public void Register(IIocBuilder builder, Type type)
 {
     if (!type.IsAbstract && type.IsClass && typeof(ICommand).IsAssignableFrom(type))
     {
         builder.RegisterType(typeof(ICommand), type, LifeTimeScope.Transient, type.FullName);
     }
 }
Example #15
0
 /// <summary>
 /// 初始化本地程序集框架
 /// </summary>
 public static IAppBuilder UseLocalInitialize(this IAppBuilder app, IIocBuilder iocBuilder)
 {
     iocBuilder.CheckNotNull("iocBuilder" );
     IFrameworkInitializer initializer = new FrameworkInitializer();
     initializer.Initialize(iocBuilder);
     return app;
 }
Example #16
0
 public void Register(IIocBuilder builder, Type type)
 {
     if (!type.IsAbstract && type.IsClass && typeof(IStartup).IsAssignableFrom(type))
     {
         builder.RegisterType(typeof(IStartup), type, LifeTimeScope.Transient, type.FullName);
     }
 }
Example #17
0
 protected TestBaseWithIocBuilder()
 {
     LocalIocManager = new IocManager();
     IocBuilder      = Autofac.Extras.IocManager.IocBuilder.New
                       .UseAutofacContainerBuilder()
                       .RegisterIocManager(LocalIocManager);
 }
Example #18
0
 /// <summary>
 /// 初始化WebApi框架
 /// </summary>
 public static IAppBuilder UseTomNetWebApi(this IAppBuilder app, IIocBuilder iocBuilder)
 {
     iocBuilder.CheckNotNull("iocBuilder");
     IFrameworkInitializer initializer = new FrameworkInitializer();
     initializer.Initialize(iocBuilder);
     return app;
 }
Example #19
0
 public void Load(IIocBuilder builder)
 {
     builder.RegisterType<IDbProvider, DefaultDbProvider>();
     builder.RegisterType<ISqlFileExecutor, DefaultSqlFileExecutor>();
     builder.RegisterFactory<DbContext, DbContextFactory>();
     builder.RegisterGeneric(typeof(IRepository<>), typeof(DbContextRepository<>));
 }
Example #20
0
        public void Load(IIocBuilder builder)
        {
            builder.RegisterType<IObjectProvider<SSOServer>, WebJsonFileObjectProvider<SSOServer>>(LifeTimeScope.Singleton,
                getConstructorParameters: (ctx) =>
                {
                    Dictionary<string, object> paras = new Dictionary<string, object>();
                    paras.Add("jsonFile", "~/App_Data/sso_server.js");
                    return paras;
                });

            builder.RegisterType<IObjectProvider<SSOClient[]>, WebJsonFileObjectProvider<SSOClient[]>>(LifeTimeScope.Singleton,
                getConstructorParameters: (ctx) =>
                {
                    Dictionary<string, object> paras = new Dictionary<string, object>();
                    paras.Add("jsonFile", "~/App_Data/sso_clients.js");
                    return paras;
                });

            builder.RegisterType<IObjectProvider<SSOClient>, WebJsonFileObjectProvider<SSOClient>>(LifeTimeScope.Singleton,
                getConstructorParameters: (ctx) =>
                {
                    Dictionary<string, object> paras = new Dictionary<string, object>();
                    paras.Add("jsonFile", "~/App_Data/sso_client.js");
                    return paras;
                });

            builder.RegisterType<ISSOConfiguration, DefaultSSOConfiguration>(LifeTimeScope.Singleton);
            builder.RegisterType<Server.ISSOServerProvider, SSOServerProvider>(LifeTimeScope.Singleton);
            builder.RegisterType<Client.ISSOClientProvider, SSOClientProvider>(LifeTimeScope.Singleton);
            builder.RegisterType<Client.IDefaultSessionProvider, Client.DefaultSessionProvider>(LifeTimeScope.Singleton);
        }
Example #21
0
 public void Load(IIocBuilder builder)
 {
     builder.RegisterType <IDbProvider, DefaultDbProvider>();
     builder.RegisterType <ISqlFileExecutor, DefaultSqlFileExecutor>();
     builder.RegisterFactory <DbContext, DbContextFactory>();
     builder.RegisterGeneric(typeof(IRepository <>), typeof(DbContextRepository <>));
 }
Example #22
0
        public static void RegisterType <IT, TT>(this IIocBuilder builder, LifeTimeScope scope = LifeTimeScope.Transient, string name = null, bool autoWire = false,
                                                 Func <IIocContext, IDictionary <string, object> > getConstructorParameters = null, Func <IIocContext, TT, TT> onActivating = null, Action <IIocContext, TT> onActivated = null)
            where TT : class, IT
        {
            Func <IIocContext, object, object> onObjActivaing = null;
            Action <IIocContext, object>       onObjActivated = null;

            if (onActivating != null)
            {
                onObjActivaing = (ctx, obj) =>
                {
                    var nobj = onActivating(ctx, (TT)obj);
                    return(nobj);
                };
            }


            if (onActivated != null)
            {
                onObjActivated = (ctx, obj) =>
                {
                    onActivated(ctx, (TT)obj);
                };
            }

            builder.RegisterType(typeof(IT), typeof(TT), scope, name, autoWire, getConstructorParameters, onObjActivaing, onObjActivated);
        }
Example #23
0
        public static IIocBuilder UseInfrastructure(this IIocBuilder builder)
        {
            var assembly = typeof(InfrastruxtureExtensions).Assembly;

            builder.RegisterServices(r => r.RegisterAssemblyByConvention(assembly));
            return(builder);
        }
        public static IIocBuilder UseStoveNHibernate(this IIocBuilder builder, Func <IStoveNHibernateConfiguration, IStoveNHibernateConfiguration> stoveNhConfigurer)
        {
            return(builder.RegisterServices(r =>
            {
                r.Register(ctx => stoveNhConfigurer);
                r.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
                r.RegisterGeneric(typeof(IRepository <>), typeof(NhRepositoryBase <>));
                r.RegisterGeneric(typeof(IRepository <,>), typeof(NhRepositoryBase <,>));
                r.Register(ctx =>
                {
                    var configuration = ctx.Resolver.Resolve <IStoveNHibernateConfiguration>();
                    Func <IStoveNHibernateConfiguration, IStoveNHibernateConfiguration> configurer = ctx.Resolver.Resolve <IStoveStartupConfiguration>().GetConfigurerIfExists <IStoveNHibernateConfiguration>();
                    configuration = configurer(configuration);

                    return configuration
                    .FluentConfiguration
                    .ExposeConfiguration(cfg => cfg.SetInterceptor(ctx.Resolver.Resolve <StoveNHibernateInterceptor>()))
                    .BuildSessionFactory();
                }, Lifetime.Singleton);

                var ormRegistrars = new List <ISecondaryOrmRegistrar>();
                ormRegistrars.Add(new NhBasedSecondaryOrmRegistrar(builder));
                r.UseBuilder(cb => { cb.Properties[StoveConsts.OrmRegistrarContextKey] = ormRegistrars; });
            }));
        }
Example #25
0
        /// <summary>
        /// 初始化SignalR框架
        /// </summary>
        public static IAppBuilder UseOsharpSignalR(this IAppBuilder app, IIocBuilder iocBuilder)
        {
            iocBuilder.CheckNotNull("iocBuilder");
            IFrameworkInitializer initializer = new FrameworkInitializer();

            initializer.Initialize(iocBuilder);
            return(app);
        }
Example #26
0
 public static IIocBuilder UseStoveHangfire([NotNull] this IIocBuilder builder, [NotNull] Func <IStoveHangfireConfiguration, IStoveHangfireConfiguration> configureAction)
 {
     return(builder.RegisterServices(r =>
     {
         r.RegisterAssemblyByConvention(typeof(StoveHangfireRegistrationExtensions).GetAssembly());
         r.Register(context => configureAction);
     }));
 }
 public static IIocBuilder UseStoveHangfire([NotNull] this IIocBuilder builder, [NotNull] Func <IStoveHangfireConfiguration, IStoveHangfireConfiguration> configureAction)
 {
     return(builder.RegisterServices(r =>
     {
         r.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
         r.Register(context => configureAction);
     }));
 }
Example #28
0
 public static void RegisterConfig(this IIocBuilder builder, string file)
 {
     if (File.Exists(file))
     {
         var doc = XElement.Load(file);
         RegisterConfig(builder, doc);
     }
 }
Example #29
0
 /// <summary>
 /// 初始化Mvc框架
 /// </summary>
 public static IAppBuilder UseOsharpMvc(this IAppBuilder app, IServiceCollection services, IIocBuilder iocBuilder)
 {
     services.CheckNotNull("services");
     iocBuilder.CheckNotNull("iocBuilder");
     IFrameworkInitializer initializer = new FrameworkInitializer();
     initializer.Initialize(services, iocBuilder);
     return app;
 }
Example #30
0
 /// <summary>
 /// Automaticaly find handler.
 /// </summary>
 public static void InitBuilder()
 {
     _builder = CreateTypeInstance <IIocBuilder>(
         FindAssignable <IIocBuilder>(
             new string[] { "RollingOutTools.SimpleIoc.OnAutofac" }
             )
         );
 }
Example #31
0
        public static IIocBuilder UseStoveDapper(this IIocBuilder builder)
        {
            builder.RegisterServices(r => r.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()));

            AutoRegisterRepositories(builder);

            return(builder);
        }
Example #32
0
 /// <summary>
 ///     Uses the stove database context seed migration strategy.
 /// </summary>
 /// <param name="builder">The builder.</param>
 /// <param name="configurationAction">The configuration action.</param>
 /// <returns></returns>
 public static IIocBuilder UseStoveDbContextSeedMigrationStrategy(this IIocBuilder builder, Func <IStoveMigrationConfiguration, IStoveMigrationConfiguration> configurationAction)
 {
     return(builder.RegisterServices(r =>
     {
         r.Register(ctx => configurationAction);
         r.Register <IMigrationStrategy, DbContextSeedMigrationStrategy>();
     }));
 }
Example #33
0
        public static AppSetupBase RegisterAndGetAppSetup <TAppSetup>(this IIocBuilder builder, Action <IIocBuilder> registerAction = null) where TAppSetup : AppSetupBase
        {
            builder.RegisterSetup <TAppSetup>();
            registerAction?.Invoke(builder);
            var ioc = builder.Build();

            return(ioc.Resolve <AppSetupBase>());
        }
        public static IIocBuilder UseStoveRabbitMQ(
            [NotNull] this IIocBuilder builder,
            [NotNull] Func <IStoveRabbitMQConfiguration, IStoveRabbitMQConfiguration> rabbitMQConfigurer,
            Action <IRabbitMqHost, IRabbitMqBusFactoryConfigurator, IComponentContext> consumerConfigurer
            )
        {
            Check.NotNull(rabbitMQConfigurer, nameof(rabbitMQConfigurer));
            Check.NotNull(consumerConfigurer, nameof(consumerConfigurer));

            builder
            .RegisterServices(r =>
            {
                r.RegisterAssemblyByConvention(typeof(StoveRabbitMQRegistrationExtensions).GetAssembly());
                r.Register <IStoveRabbitMQConfiguration, StoveRabbitMQConfiguration>(Lifetime.Singleton);
                r.Register <IMessageBus, StoveRabbitMQMessageBus>();
                r.Register(ctx => rabbitMQConfigurer);
            });

            builder.RegisterServices(r => r.UseBuilder(cb =>
            {
                cb.Register(ctx =>
                {
                    var configuration = ctx.Resolve <IStoveRabbitMQConfiguration>();

                    IBusControl busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
                    {
                        IRabbitMqHost host = cfg.Host(new Uri(configuration.HostAddress), h =>
                        {
                            h.Username(configuration.Username);
                            h.Password(configuration.Password);
                        });

                        if (configuration.UseRetryMechanism)
                        {
                            cfg.UseRetry(rtryConf => { rtryConf.Immediate(configuration.MaxRetryCount); });
                        }

                        if (configuration.PrefetchCount.HasValue)
                        {
                            cfg.PrefetchCount = (ushort)configuration.PrefetchCount;
                        }

                        if (configuration.ConcurrencyLimit.HasValue)
                        {
                            cfg.UseConcurrencyLimit(configuration.ConcurrencyLimit.Value);
                        }

                        consumerConfigurer(host, cfg, ctx);
                    });

                    return(busControl);
                }).SingleInstance()
                .As <IBusControl>()
                .As <IBus>();
            }));

            return(builder);
        }
Example #35
0
        /// <summary>
        /// 开始执行框架初始化
        /// </summary>
        /// <param name="iocBuilder">依赖注入构建器</param>
        public void Initialize(IIocBuilder iocBuilder)
        {
            iocBuilder.CheckNotNull("iocBuilder");

            OSharpConfig config = OSharpConfig.Instance;

            //依赖注入初始化
            IServiceProvider provider = iocBuilder.Build();

            //对象映射功能初始化
            IMappersBuilder mappersBuilder = provider.GetService <IMappersBuilder>();
            IMapper         mapper         = provider.GetService <IMapper>();

            if (!_mapperInitialized && mapper != null)
            {
                if (mappersBuilder != null)
                {
                    IEnumerable <IMapTuple> mapTuples = provider.GetServices <IMapTuple>();
                    mappersBuilder.Build(mapTuples);
                }
                MapperExtensions.SetMaper(mapper);
                _mapperInitialized = true;
            }

            //日志功能初始化
            IBasicLoggingInitializer loggingInitializer = provider.GetService <IBasicLoggingInitializer>();

            if (!_basicLoggingInitialized && loggingInitializer != null)
            {
                loggingInitializer.Initialize(config.LoggingConfig);
                _basicLoggingInitialized = true;
            }

            //数据库初始化
            IDatabaseInitializer databaseInitializer = provider.GetService <IDatabaseInitializer>();

            if (!_databaseInitialized && databaseInitializer != null)
            {
                databaseInitializer.Initialize(config.DataConfig);
                _databaseInitialized = true;
            }

            //实体信息初始化
            IEntityInfoHandler entityInfoHandler = provider.GetService <IEntityInfoHandler>();

            if (!_entityInfoInitialized && entityInfoHandler != null)
            {
                entityInfoHandler.Initialize();
                _entityInfoInitialized = true;
            }
            //功能信息初始化
            IFunctionHandler functionHandler = provider.GetService <IFunctionHandler>();

            if (functionHandler != null)
            {
                functionHandler.Initialize();
            }
        }
Example #36
0
        public void Load(IIocBuilder builder)
        {
            builder.RegisterType<IScheduleTimer, ElapseScheduleTimer>(LifeTimeScope.Singleton);
            builder.RegisterType<IScheduleManager, DefaultScheduleManager>(LifeTimeScope.Singleton);
            builder.RegisterType<IScheduleTrigger, TimingTrigger>(name: "TimingTrigger");
            builder.RegisterType<IOperation, NullOperation>(name: "NullOperation");

            builder.RegisterType<IAppEventHandler, ScheduleAppEventHandler>();
        }
Example #37
0
        public void Load(IIocBuilder builder)
        {
            builder.RegisterType<IAppEventHandler, OracleBLToolkitDataEventHandler>(name: "BLToolkitDataEventHandler");

            builder.RegisterType<IDbProvider, OracleDbProvider>();
            builder.RegisterType<ISqlFileExecutor, SqlFileExecutor>();
            builder.RegisterFactory<IDataContext, DataContextFactory>();
            builder.RegisterGeneric(typeof(IRepository<>), typeof(DataContextRepository<>));
        }
Example #38
0
        protected override void BuildeIOC(IIocBuilder builder)
        {
            base.BuildeIOC(builder);

            if (builder is IOC.IIocBuilderForApi)
            {
                ((IOC.IIocBuilderForApi)builder).RegisterApiControllers(Config.Current.AssembiesToScan.ToArray());
            }
        }
Example #39
0
        public static IIocBuilder UseRepositoryRegistrarInAssembly([NotNull] this IIocBuilder builder, [NotNull] Assembly assembly)
        {
            Check.NotNull(assembly, nameof(assembly));

            List <Type> dbContextTypes = typeof(StoveDbContext).AssignedTypesInAssembly(assembly).ToList();

            dbContextTypes.ForEach(type => EfRepositoryRegistrar.RegisterRepositories(type, builder));
            return(builder);
        }
Example #40
0
        /// <summary>
        /// 初始化Mvc框架
        /// </summary>
        public static IAppBuilder UseOsharpMvc(this IAppBuilder app, IIocBuilder iocBuilder)
        {
            iocBuilder.CheckNotNull("iocBuilder");

            ModelBinders.Binders.Add(typeof(string), new StringTrimModelBinder());

            IFrameworkInitializer initializer = new FrameworkInitializer();
            initializer.Initialize(iocBuilder);
            return app;
        }
Example #41
0
 public void Load(IIocBuilder builder)
 {
     builder.RegisterType<IJsonSerializer, JsonNetSerializer>(
         getConstructorParameters: (ctx) =>
         {
             Dictionary<string, object> paras = new Dictionary<string, object>();
             paras.Add("preserveReferencesHandling", PreserveReferencesHandling.None);
             return paras;
         });
 }
Example #42
0
 public void Load(IIocBuilder builder)
 {
     builder.RegisterType<Core.Template.ITemplateEngine, Core.Template.DefaultTemplateEngine>(name: "DefaultTemplateEngine");
     builder.RegisterType<Core.Template.ITemplateGenerator, RazorContentTemplateGenerator>(name: "RazorContentTemplateGenerator");
     builder.RegisterType<Core.Template.ITemplateProvider, Core.Template.FileTemplateProvider>(name: "FileTemplateProvider",
         getConstructorParameters: (ctx) =>
         {
             Dictionary<string, object> paras = new Dictionary<string, object>();
             paras.Add("root", "~/Templates");
             return paras;
         });
 }
Example #43
0
        /// <summary>
        /// 开始执行框架初始化
        /// </summary>
        /// <param name="iocBuilder">依赖注入构建器</param>
        public void Initialize(IIocBuilder iocBuilder)
        {
            iocBuilder.CheckNotNull("iocBuilder");

            OSharpConfig config = OSharpConfig.Instance;

            //依赖注入初始化
            IServiceProvider provider = iocBuilder.Build();

            //对象映射功能初始化
            IMappersBuilder mappersBuilder = provider.GetService<IMappersBuilder>();
            IMapper mapper = provider.GetService<IMapper>();
            if (!_mapperInitialized && mapper != null)
            {
                if (mappersBuilder != null)
                {
                    IEnumerable<IMapTuple> mapTuples = provider.GetServices<IMapTuple>();
                    mappersBuilder.Build(mapTuples);
                }
                MapperExtensions.SetMaper(mapper);
                _mapperInitialized = true;
            }

            //日志功能初始化
            IBasicLoggingInitializer loggingInitializer = provider.GetService<IBasicLoggingInitializer>();
            if (!_basicLoggingInitialized && loggingInitializer != null)
            {
                loggingInitializer.Initialize(config.LoggingConfig);
                _basicLoggingInitialized = true;
            }

            //数据库初始化
            IDatabaseInitializer databaseInitializer = provider.GetService<IDatabaseInitializer>();
            if (!_databaseInitialized && databaseInitializer != null)
            {
                databaseInitializer.Initialize(config.DataConfig);
                _databaseInitialized = true;
            }

            //实体信息初始化
            IEntityInfoHandler entityInfoHandler = provider.GetService<IEntityInfoHandler>();
            if (!_entityInfoInitialized && entityInfoHandler != null)
            {
                entityInfoHandler.Initialize();
                _entityInfoInitialized = true;
            }
            //功能信息初始化
            IFunctionHandler functionHandler = provider.GetService<IFunctionHandler>();
            if (functionHandler != null)
            {
                functionHandler.Initialize();
            }
        }
Example #44
0
 public void Register(IIocBuilder builder, Type type)
 {
     if (!type.IsAbstract && type.IsClass && typeof(DbContext).IsAssignableFrom(type))
     {
         var props = type.GetProperties().Where(o => o.PropertyType.IsGenericType && o.PropertyType.GetGenericTypeDefinition().Equals(typeof(DbSet<>)));
         foreach (var prop in props)
         {
             var entityType = prop.PropertyType.GetGenericArguments()[0];
             DbContextConfig.EentityTypeToDbContextType.Add(entityType, type);
         }
     }
 }
Example #45
0
 protected override void BuildeIOC(IIocBuilder builder)
 {
     base.BuildeIOC(builder);
     DirectoryInfo dir = new DirectoryInfo(Server.MapPath("~/Modules"));
     var files = dir.GetFiles("ioc.config", true);
     if (files != null && files.Count() > 0)
     {
         foreach (var f in files)
         {
             builder.RegisterConfig(f.FullName);
         }
     }
 }
Example #46
0
        /// <summary>
        /// 开始执行框架初始化
        /// </summary>
        /// <param name="services">服务映射集合</param>
        /// <param name="iocBuilder">依赖注入构建器</param>
        public void Initialize(IServiceCollection services, IIocBuilder iocBuilder)
        {
            services.CheckNotNull("services");
            iocBuilder.CheckNotNull("iocBuilder");

            OSharpConfig config = OSharpConfig.Instance;

            //使用副本进行初始化,防止不同平台间的相互污染
            IServiceCollection newServices = services.Clone();
            //依赖注入初始化
            IServiceProvider provider = iocBuilder.Build(newServices);

            //日志功能初始化
            IBasicLoggingInitializer loggingInitializer = provider.GetService<IBasicLoggingInitializer>();
            if (!_basicLoggingInitialized && loggingInitializer != null)
            {
                loggingInitializer.Initialize(config.LoggingConfig);
                _basicLoggingInitialized = true;
            }

            //数据库初始化
            IDatabaseInitializer databaseInitializer = provider.GetService<IDatabaseInitializer>();
            if (!_databaseInitialized)
            {
                if (databaseInitializer == null)
                {
                    throw new InvalidOperationException(Resources.FrameworkInitializerBase_DatabaseInitializeIsNull);
                }
                databaseInitializer.Initialize(config.DataConfig);
                _databaseInitialized = true;
            }

            //实体信息初始化
            if (!_entityInfoInitialized)
            {
                IEntityInfoHandler entityInfoHandler = provider.GetService<IEntityInfoHandler>();
                if (entityInfoHandler == null)
                {
                    throw new InvalidOperationException(Resources.FrameworkInitializerBase_EntityInfoHandlerIsNull);
                }
                entityInfoHandler.Initialize();
                _entityInfoInitialized = true;
            }
            //功能信息初始化
            IFunctionHandler functionHandler = provider.GetService<IFunctionHandler>();
            if (functionHandler == null)
            {
                throw new InvalidOperationException(Resources.FrameworkInitializerBase_FunctionHandlerIsNull);
            }
            functionHandler.Initialize();
        }
Example #47
0
        public void Load(IIocBuilder builder)
        {
            //builder.RegisterType<Core.Configurations.IConfigurationProvider, Configurations.AreaConfigurationProvider>();

            builder.RegisterType<Core.Localization.ILocalizer, Localization.JsonLocalizer>(LifeTimeScope.Singleton, autoWire: true,
                getConstructorParameters: (ctx) =>
                {
                    Dictionary<string, object> paras = new Dictionary<string, object>();
                    paras.Add("paths", "Localization, Areas/*/Localization");
                    return paras;
                });

            builder.RegisterType<IAppEventHandler, WebMvcAppEventHandler>();
        }
 public void Register(IIocBuilder builder, Type type)
 {
     if (!type.IsAbstract && type.IsClass)
     {
         var itypes = type.GetInterfaces();
         if (itypes != null && itypes.Length > 0)
         {
             var itype = type.GetInterfaces()[0];
             if (itype.IsGenericType && itype.GetGenericTypeDefinition().Equals(typeof(IMessageMapper<>)))
             {
                 builder.RegisterType(itype, type, LifeTimeScope.Transient, type.FullName);
             }
         }
     }
 }
 public void Register(IIocBuilder builder, Type type)
 {
     var docAttr = type.GetCustomAttribute<DocumentAttribute>(true);
     if (docAttr != null)
     {
         if (string.IsNullOrEmpty(docAttr.TypeName))
             docAttr.TypeName = type.Name;
         if (docAttr.ObjectType == null)
             docAttr.ObjectType = type;
         if (docAttr.DocumentBuilder == null)
             docAttr.DocumentBuilder = typeof(AttributeDocumentBuilder);
         if (docAttr.IndexPathBuilder == null)
             docAttr.IndexPathBuilder = typeof(LocaleDateTimeIndexPathBuilder);
         if (docAttr.FacetFieldNameProvider == null)
             docAttr.FacetFieldNameProvider = typeof(LocaleFacetFieldNameProvider);
         AttributedTypes.SearchTypes.Add(type.Name, docAttr);
     }
 }
Example #50
0
        public void Load(IIocBuilder builder)
        {
            builder.RegisterType<Core.FileSystem.IFileSystemProvider, Core.FileSystem.LocalFileProvider>(name: "LocalFileSystem");
            builder.RegisterType<Core.Caching.ICacheManager, Caching.WebCacheManager>();
            builder.RegisterType<Core.Security.IPasswordEncryptionProvider, Core.Security.HashEncryptionProvider>(LifeTimeScope.Singleton);
            builder.RegisterType<Core.Generators.IRandomTextGenerator, Core.Generators.RNGRandomTextGenerator>(LifeTimeScope.Singleton);
            builder.RegisterType<Core.Generators.IIdGenerator, Core.Generators.TicksIdGenerator>(LifeTimeScope.Singleton);
            #if DEBUG
            builder.RegisterType<Core.Data.ITransactionManager, Core.Data.NullTransactionManager>();
            #else
            builder.RegisterType<Core.Data.ITransactionManager, Core.Data.DefaultTransactionManager>();
            #endif
            builder.RegisterType<Security.ICaptchaGenerator, Security.DefaultCaptchaGenerator>(LifeTimeScope.Singleton);
            builder.RegisterType<Core.Serialization.IJsonSerializer, Serialization.JavascriptConvert>(LifeTimeScope.Singleton);

            builder.RegisterType<IObjectProvider<IEnumerable<DAF.Core.Localization.LocalizationInfo>>, WebJsonFileObjectProvider<IEnumerable<DAF.Core.Localization.LocalizationInfo>>>(LifeTimeScope.Singleton,
                getConstructorParameters: (ctx) =>
                    {
                        Dictionary<string, object> paras = new Dictionary<string, object>();
                        paras.Add("jsonFile", "~/App_Data/languages.js");
                        return paras;
                    });

            builder.RegisterType<IObjectProvider<IEnumerable<Menu.MenuGroup>>, WebJsonFileObjectProvider<IEnumerable<Menu.MenuGroup>>>(LifeTimeScope.Singleton,
                getConstructorParameters: (ctx) =>
                    {
                        Dictionary<string, object> paras = new Dictionary<string, object>();
                        paras.Add("jsonFile", "~/App_Data/menu.js");
                        return paras;
                    });

            builder.RegisterType<Core.Localization.ILocalizer, Localization.JsonLocalizer>(LifeTimeScope.Singleton, autoWire: true,
                getConstructorParameters: (ctx) =>
                    {
                        Dictionary<string, object> paras = new Dictionary<string, object>();
                        paras.Add("paths", "Localization");
                        return paras;
                    });

            //builder.RegisterType<Core.Logging.ILogger, Core.Logging.NullLogger>(LiftTimeScope.Singleton, autoWire: true);
            builder.RegisterType<IWebAppEventHandler, IOC.IocWebAppEventHandler>(LifeTimeScope.Singleton);
        }
Example #51
0
 public void Load(IIocBuilder builder)
 {
     builder.RegisterType<ModelMetadataProvider, DataAnnotationsModelMetadataProvider2>(LifeTimeScope.Singleton);
     builder.RegisterType<IAppEventHandler, WebApiAppEventHandler>();
 }
Example #52
0
 public void Load(IIocBuilder builder)
 {
     builder.RegisterGeneric(typeof(IRepositoryEventHandler<>), typeof(SearchRepositoryEventHandler<>));
     builder.RegisterType<IAppEventHandler, SearchAppEventHandler>();
 }
        /// <summary>
        /// 开始执行框架初始化
        /// </summary>
        /// <param name="iocBuilder">依赖注入构建器</param>
        public void Initialize(IIocBuilder iocBuilder)
        {
            iocBuilder.CheckNotNull("iocBuilder");

            OSharpConfig config = OSharpConfig.Instance;
            
            //依赖注入初始化
            IServiceProvider provider = iocBuilder.Build();

            //对象映射功能初始化
            IMappersBuilder mappersBuilder = provider.GetService<IMappersBuilder>();
            IMapper mapper = provider.GetService<IMapper>();
            if (!_mapperInitialized)
            {
                if (mappersBuilder != null)
                {
                    IEnumerable<IMapTuple> mapTuples = provider.GetServices<IMapTuple>();
                    mappersBuilder.Build(mapTuples);
                }
                if (mapper != null)
                {
                    MapperExtensions.SetMaper(mapper);
                }
                _mapperInitialized = true;
            }

            //日志功能初始化
            IBasicLoggingInitializer loggingInitializer = provider.GetService<IBasicLoggingInitializer>();
            if (!_basicLoggingInitialized && loggingInitializer != null)
            {
                loggingInitializer.Initialize(config.LoggingConfig);
                _basicLoggingInitialized = true;
            }

            //数据库初始化
            IDatabaseInitializer databaseInitializer = provider.GetService<IDatabaseInitializer>();
            if (!_databaseInitialized)
            {
                if (databaseInitializer == null)
                {
                    throw new InvalidOperationException(Resources.FrameworkInitializer_DatabaseInitializeIsNull);
                }
                databaseInitializer.Initialize(config.DataConfig);
                _databaseInitialized = true;
            }

            //实体信息初始化
            if (!_entityInfoInitialized)
            {
                IEntityInfoHandler entityInfoHandler = provider.GetService<IEntityInfoHandler>();
                if (entityInfoHandler == null)
                {
                    throw new InvalidOperationException(Resources.FrameworkInitializer_EntityInfoHandlerIsNull);
                }
                entityInfoHandler.Initialize();
                _entityInfoInitialized = true;
            }
            //功能信息初始化
            IFunctionHandler functionHandler = provider.GetService<IFunctionHandler>();
            if (functionHandler == null)
            {
                throw new InvalidOperationException(Resources.FrameworkInitializer_FunctionHandlerIsNull);
            }
            functionHandler.Initialize();
        }
Example #54
0
 public void Load(IIocBuilder builder)
 {
     builder.RegisterType<IMessageSender, NBusSender>(LifeTimeScope.Singleton);
 }
Example #55
0
 public static void RegisterBuilder(IIocBuilder builder)
 {
     IocInstance.builder = builder;
 }
Example #56
0
 public void Load(IIocBuilder builder)
 {
     builder.RegisterType<ISqlFileExecutor, SqlFileExecutor>();
     builder.RegisterFactory<MongoDatabase, DatabaseFactory>();
     builder.RegisterGeneric(typeof(IRepository<>), typeof(CollectionRepository<>));
 }
Example #57
0
 protected virtual void BuildeIOC(IIocBuilder builder)
 {
     var file = ("~/Configurations/" + iocConfigFile).GetPhysicalPath();
     builder.RegisterConfig(file);
 }