首页 技术 正文
技术 2022年11月12日
0 收藏 615 点赞 3,111 浏览 2599 个字

ASP.NET Boilerplate提供了在StartUp中配置其模块的基础设施和模型。

配置ASP.NET Boilerplate

配置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 XmlLocalizationSource(
"SimpleTaskSystem",
HttpContext.Current.Server.MapPath("~/Localization/SimpleTaskSystem")
)
); //Configure navigation/menu
Configuration.Navigation.Providers.Add<SimpleTaskSystemNavigationProvider>();
} public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
}
}

ABP的设计考虑到了模块化,可以配置不同的模块。比如模块可以添加导航提供者在主菜单中添加自己的菜单项(有关配置它们的详细信息,请参阅本地化和导航文档)。

取代内置服务

Configuration.ReplaceService方法可用于重写内置服务,例如,我们可以用自定义实现替换IAbpSession服务,如下所示:

Configuration.ReplaceService<IAbpSession, MySession>(DependencyLifeStyle.Transient);

ReplaceService方法有一个重载,通过一个动作以定制的方式进行替换(我们可以直接使用Castle Windsor及其高级注册API)。

相同的服务可以被多次替换,特别是在不同的模块中。最后一个替换的是有效的那个。按照依赖顺序执行模块PreInitialize方法。

配置模块

除了框架自己的启动配置之外,模块还可以扩展IAbpModuleConfigurations接口,为模块提供配置点。例如:

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

在上面的例子中,我们配置了AbpWebCommon模块,将所有异常发送给客户端。

不是每个模块都应该定义这种类型的配置。当模块在不同的应用程序中需要重用时通常会启动时配置。

为模块创建配置

假设我们有一个名为MyModule的模块,它有一些配置属性。首先,我们为这些可配置属性创建一个类:

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

然后,我们通过抵赖注入将这个类注册到MyModule的预初始化方法中(因此,它将是可注入的):

IocManager.Register<MyModuleConfig>();

它应该像本例中那样注册为单例。我们现在可以使用以下代码在模块的PreInitialize方法中配置MyModule:

Configuration.Get<MyModuleConfig>().SampleConfig1 = false;

这样我们可以使用IAbpStartupConfiguration.Get方法,可以创建IModuleConfigurations 扩展方法,如下所示:

public static class MyModuleConfigurationExtensions
{
public static MyModuleConfig MyModule(this IModuleConfigurations moduleConfigurations)
{
return moduleConfigurations.AbpConfiguration.Get<MyModuleConfig>();
}
}

现在其他模块可以使用扩展方法来配置这个模块:

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

这使得研究模块配置和在一个地方收集它们变得很容易(Configuration.Modules…)。ABP本身为自己的模块配置定义了扩展方法。

在某些时候,MyModule需要这种配置。我们可以注入MyModuleConfig并使用配置的值。例如

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

通过这种方式,模块可以在ASP.NET Boilerplate中创建中心配置点。。。

:

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,078
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,553
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,402
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,177
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,814
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,898