/// <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)); } }
/// <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); }
/// <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)); } }
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(); }); }
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; }
public static void UseInfrastructures(this IKernelBuilder kernelBuilder) { kernelBuilder.RegisterExtension(typeof(BuilderExtensions).Assembly); }
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; }
internal EntityFrameworkProviderBuilder(IKernelBuilder kernelBuilder) { KernelBuilder = kernelBuilder; }
/// <summary> /// 使用日志。 /// </summary> /// <param name="kernelBuilder">内核建设者。</param> /// <param name="loggingBuilder">日志建设动作。</param> public static void UseLogging(this IKernelBuilder kernelBuilder, Action <ILoggingBuilder> loggingBuilder) { loggingBuilder(new LoggingBuilder(kernelBuilder)); }
public static void UseResources(this IKernelBuilder kernelBuilder) { BundleTable.EnableOptimizations = true; RegisterResources(BundleTable.Bundles); }
/// <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)); }
/// <summary> /// 使用总线。 /// </summary> /// <param name="kernelBuilder">内核建设者。</param> /// <param name="busBuilder">总线建设动作。</param> public static void UseBus(this IKernelBuilder kernelBuilder, Action <IBusBuilder> busBuilder) { busBuilder(new BusBuilder(kernelBuilder)); }