Example #1
0
        /// <summary>
        ///     使用Web。
        /// </summary>
        /// <param name="kernelBuilder">内核建设者。</param>
        /// <param name="webBuilder">Web建设动作。</param>
        /// <param name="routes">路由集合,如果为 null 则默认为 RouteTable.Routes。</param>
        public static void UseWeb(this IKernelBuilder kernelBuilder, Action <IWebBuilder> webBuilder, RouteCollection routes = null)
        {
            kernelBuilder
            .RegisterExtension(typeof(BuilderExtensions).Assembly)
            .OnStarting(builder =>
            {
                builder.RegisterInstance(routes ?? RouteTable.Routes);

                builder.RegisterType <WebHost>().As <IWebHost>().As <IHost>().As <IEventHandler>()

                /*.Named<IEventHandler>(typeof(IShellSettingsManagerEventHandler).Name)
                 * .Named<IEventHandler>(typeof(IShellDescriptorManagerEventHandler).Name)*/
                .As <IShellSettingsManagerEventHandler>()
                .As <IShellDescriptorManagerEventHandler>()
                .SingleInstance();

                builder.RegisterModule <WebModule>();
                builder.RegisterType <DefaultRunningShellTable>().As <IRunningShellTable>().SingleInstance();
            });

            if (webBuilder != null)
            {
                webBuilder(new WebBuilder(kernelBuilder));
            }
        }
Example #2
0
        /// <summary>
        ///     注册一个扩展。
        /// </summary>
        /// <param name="kernelBuilder">内核建设者。</param>
        /// <param name="assembly">扩展程序集。</param>
        /// <param name="isMinimumShellDescriptor">是否迷你外壳描述符。</param>
        /// <returns>内核建设者。</returns>
        public static IKernelBuilder RegisterExtension(this IKernelBuilder kernelBuilder, Assembly assembly, bool isMinimumShellDescriptor)
        {
            kernelBuilder.OnStarting(
                builder =>
            {
                builder.RegisterType <ExtensionFolders>().As <IExtensionFolders>().SingleInstance();
                builder.RegisterType <ExtensionMinimumShellDescriptorProvider>().As <IMinimumShellDescriptorProvider>().SingleInstance();
            },
                "RegisterExtensions");

            var description = new ExtensionFolders.SimpleExtensionDescription
            {
                Id       = assembly.GetName().Name,
                Type     = "Module",
                Location = "~/"
            };

            Descriptions.Add(description);

            if (isMinimumShellDescriptor)
            {
                ExtensionMinimumShellDescriptorProvider.Features.Add(description.Id);
            }

            return(kernelBuilder);
        }
Example #3
0
 /// <summary>
 /// 使用数据。
 /// </summary>
 /// <param name="kernelBuilder">内核建设者。</param>
 /// <param name="dataBuilder">数据建设者。</param>
 public static void UseData(this IKernelBuilder kernelBuilder, Action <IDataBuilder> dataBuilder)
 {
     kernelBuilder.OnStarting(builder => builder.RegisterType <CompositionStrategyProvider>().As <ICompositionStrategyProvider>().SingleInstance());
     if (dataBuilder != null)
     {
         dataBuilder(new DataBuilder(kernelBuilder));
     }
 }
Example #4
0
        public static IKernelBuilder AddConsoleSupport(this IKernelBuilder kernelBuilder)
        {
            kernelBuilder.ConfigureServices(x => x.AddScoped <IConsoleService, ConsoleService>());

            kernelBuilder.ConfigureServices(x => x.AddScopedCollectionFor <IConsoleCommand>());

            return(kernelBuilder);
        }
 /// <summary>
 ///     使用命令行。
 /// </summary>
 /// <param name="kernelBuilder">内核建设者。</param>
 public static void UseCommand(this IKernelBuilder kernelBuilder)
 {
     kernelBuilder
     .RegisterExtension(typeof(BuilderExtensions).Assembly)
     .OnStarting(builder =>
                 builder.RegisterType <MinimumShellDescriptorProvider>()
                 .As <IMinimumShellDescriptorProvider>()
                 .SingleInstance());
 }
 /// <summary>
 /// 使用缓存。
 /// </summary>
 /// <param name="kernelBuilder">内核建设者。</param>
 /// <param name="cachingBuilder">缓存建设动作。</param>
 public static void UseCaching(this IKernelBuilder kernelBuilder, Action <ICachingBuilder> cachingBuilder)
 {
     kernelBuilder.OnStarting(builder =>
     {
         builder.RegisterType <DefaultCacheContextAccessor>().As <ICacheContextAccessor>().SingleInstance();
         builder.RegisterType <DefaultParallelCacheContext>().As <IParallelCacheContext>().SingleInstance();
         builder.RegisterType <DefaultAsyncTokenProvider>().As <IAsyncTokenProvider>().SingleInstance();
     });
     cachingBuilder(new CachingBuilder(kernelBuilder));
 }
 /// <summary>
 /// 使用数据。
 /// </summary>
 /// <param name="kernelBuilder">内核建设者。</param>
 public static void UseDataBase(this IKernelBuilder kernelBuilder)
 {
     //            kernelBuilder.RegisterExtension(typeof (BuilderExtensions).Assembly);
     kernelBuilder.OnStarting(
         builder =>
     {
         builder.RegisterType <DbConnectionFactory>().As <IDbConnectionFactory>().InstancePerDependency();
         builder.RegisterType <SqlDbConnectionProvider>().As <IDbConnectionProvider>().SingleInstance();
     });
 }
Example #8
0
        protected override void InitializeShell()
        {
            base.InitializeShell();

            IKernelBuilder builder = Container.Resolve <IKernelBuilder>();

            //This is where to register additional lib
            //builder.OnStarting(b => b.RegisterType<Shell>().AsSelf().As<ICacheManager>().InstancePerLifetimeScope());
            builder.UseCaching(c => c.UseMemoryCache());

            var hostContainer = builder.Build();

            //To make sure every property has its injected value
            var type       = GetType();
            var properties = type.GetProperties();

            foreach (var property in properties)
            {
                var propertyType = property.PropertyType;
                if (!hostContainer.IsRegistered(propertyType))
                {
                    continue;
                }
                property.SetValue(this, hostContainer.Resolve(propertyType), null);
            }
            //To load the cache manager to manage cache
            _cacheManager = LifetimeScope.Resolve <ICacheManager>(new TypedParameter(typeof(Type), typeof(Bootstrapper)));

            var host = hostContainer.Resolve <IHost>();

            host.Initialize();



            var work = host.CreateStandaloneEnvironment(new ShellSettings {
                Name = "Default"
            });

            //var form = work.Resolve<Shell>();


            App.Current.MainWindow = (Window)Shell;
            App.Current.MainWindow.Show();
        }
 public CachingBuilder(IKernelBuilder kernelBuilder)
 {
     KernelBuilder = kernelBuilder;
 }
 public WebBuilder(IKernelBuilder kernelBuilder)
 {
     KernelBuilder = kernelBuilder;
 }
Example #11
0
 public static void UseInfrastructures(this IKernelBuilder kernelBuilder)
 {
     kernelBuilder.RegisterExtension(typeof(BuilderExtensions).Assembly);
 }
 public CachingBuilder(IKernelBuilder kernelBuilder)
 {
     KernelBuilder = kernelBuilder;
 }
Example #13
0
        public static IKernelBuilder UseConfig(this IKernelBuilder kernelBuilder, IConfiguration configuration)
        {
            kernelBuilder.ConfigureServices(containerBuilder => containerBuilder.Configure(configuration));

            return(kernelBuilder);
        }
 public LoggingBuilder(IKernelBuilder kernelBuilder)
 {
     KernelBuilder = kernelBuilder;
 }
 public DataBuilder(IKernelBuilder kernelBuilder)
 {
     KernelBuilder = kernelBuilder;
 }
 public BusBuilder(IKernelBuilder kernelBuilder)
 {
     KernelBuilder = kernelBuilder;
 }
Example #17
0
 internal EntityFrameworkProviderBuilder(IKernelBuilder kernelBuilder)
 {
     KernelBuilder = kernelBuilder;
 }
Example #18
0
 /// <summary>
 /// 使用日志。
 /// </summary>
 /// <param name="kernelBuilder">内核建设者。</param>
 /// <param name="loggingBuilder">日志建设动作。</param>
 public static void UseLogging(this IKernelBuilder kernelBuilder, Action <ILoggingBuilder> loggingBuilder)
 {
     loggingBuilder(new LoggingBuilder(kernelBuilder));
 }
Example #19
0
 public WebBuilder(IKernelBuilder kernelBuilder)
 {
     KernelBuilder = kernelBuilder;
 }
Example #20
0
 public static void UseResources(this IKernelBuilder kernelBuilder)
 {
     BundleTable.EnableOptimizations = true;
     RegisterResources(BundleTable.Bundles);
 }
Example #21
0
 /// <summary>
 ///     注册一个扩展。
 /// </summary>
 /// <param name="kernelBuilder">内核建设者。</param>
 /// <param name="assembly">扩展程序集。</param>
 /// <returns>内核建设者。</returns>
 public static IKernelBuilder RegisterExtension(this IKernelBuilder kernelBuilder, Assembly assembly)
 {
     return(RegisterExtension(kernelBuilder, assembly, true));
 }
Example #22
0
 public DataBuilder(IKernelBuilder kernelBuilder)
 {
     KernelBuilder = kernelBuilder;
 }
 /// <summary>
 /// 使用总线。
 /// </summary>
 /// <param name="kernelBuilder">内核建设者。</param>
 /// <param name="busBuilder">总线建设动作。</param>
 public static void UseBus(this IKernelBuilder kernelBuilder, Action <IBusBuilder> busBuilder)
 {
     busBuilder(new BusBuilder(kernelBuilder));
 }
Example #24
0
 public LoggingBuilder(IKernelBuilder kernelBuilder)
 {
     KernelBuilder = kernelBuilder;
 }
 public BusBuilder(IKernelBuilder kernelBuilder)
 {
     KernelBuilder = kernelBuilder;
 }