你的位置:首页 > ASP.net教程

[ASP.net教程][Architect] ABP(现代ASP.NET样板开发框架) 启动配置

本节目录

  • 配置ABP
  • 配置Module
  • 为模块创建配置

 

ABP在模块启动的时候提供了配置功能.

配置ABP

在模块的PreInitialize 方法中做配置.如下:

public class SimpleTaskSystemModule : AbpModule{  public override void PreInitialize()  {    //Add languages for your application    Configuration.Localization.Languages.Add(new LanguageInfo("en", "English", "famfamfam-flag-england", true));    Configuration.Localization.Languages.Add(new LanguageInfo("tr", "Türkçe", "famfamfam-flag-tr"));    //Add a localization source    Configuration.Localization.Sources.Add(      new 

 

ABP是基于模块化设计的.不同的模块都可以配置ABP.例如,在不同的模块通过navigation provider提供独立的菜单项到主菜单上.(See localization and navigation documents for details)

 

配置模块

除了系统内置的配置,1个模块也可以实现IAbpModuleConfigurations为模块提供配置点.例如:

...using Abp.Web.Configuration;...public override void PreInitialize() {  Configuration.Modules.AbpWeb().SendAllExceptionsToClients = true;}...

在这个例子中,我们配置AbpWeb module发送所有异常到客户端.

不是每个模块必须定义配置.通常模块在不同的应用中重用时,可以在启动时做配置.

 

为模块创建配置

假设我们有1个名为MyModule 的module,并且他有一些配置属性.首先,我们为这些属性创建1个类.

public class MyModuleConfig{  public bool SampleConfig1 { get; set; }  public string SampleConfig2 { get; set; }}

然后我们在MyModule 的PreInitialize 方法中注册这个类.(这样它就可被注入了)

IocManager.Register<MyModuleConfig>();

 

最后,我们为IModuleConfigurations 创建1个扩展方法来获取MyModuleConfig.

public static class MyModuleConfigurationExtensions{  public static MyModuleConfig MyModule(this IModuleConfigurations moduleConfigurations)  {    return moduleConfigurations.AbpConfiguration      .GetOrCreate("MyModuleConfig",        () => moduleConfigurations.AbpConfiguration.IocManager.Resolve<MyModuleConfig>()      );  }}

 

现在,其他模块可以在启动的时候配置这个模块.(在需要MyModule的PreInitialize 方法中)

Configuration.Modules.MyModule().SampleConfig1 = false;Configuration.Modules.MyModule().SampleConfig2 = "test";

有时,MyModule需要使用这个配置,你可以注入并使用.例如:

public class MyService : ITransientDependency{  private readonly MyModuleConfig _configuration;  public MyService(MyModuleConfig configuration)  {    _configuration = configuration;  }  public void DoIt()  {    if (_configuration.SampleConfig2 == "test")    {      //...    }  }}

这样,可以在ABP系统中集中的创建模块配置.