ABP Framework入门开发指南
下面是具体方法的说明: ? PreInitialize
预初始化:当应用启动后,第一次会调用这个方法。在依赖注入注册之前,你可以在这个方法中指定自己的特别代码。举个例子吧:假如你创建了一个传统的登记类,那么你要先注册这个类(使用IocManager对登记类进行注册),你可以注册事件到IOC容器。等。
? Initialize
初始化:在这个方法中一般是来进行依赖注入的注册,一般我们通过IocManager.RegisterAssemblyByConvention这个方法来实现。如果你想实现自定义的依赖注入,那么请参考依赖注入的相关文档。
? PostInitialize
提交初始化:最后一个方法,这个方法用来解析依赖关系。 ? Shutdown
关闭:当应用关闭以后,这个方法被调用。 1.3.3 模块依赖
Abp框架会自动解析模块之间的依赖关系,但是我们还是建议你通过重载GetDependencies方法来明确的声明依赖关系。
[DependsOn(typeof(MyBlogCoreModule))]//通过注解来定义依赖关系 public class MyBlogApplicationModule : AbpModule {
public override void Initialize() {
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()); } }
例如上面的代码,我们就声明了MyBlogApplicationModule和MyBlogCoreModule的依赖关系(通过属性attribute),MyBlogApplicationModule这个应用模块依赖于MyBlogCoreModule核心模块,并且,MyBlogCoreModule核心模块会在MyBlogApplicationModule模块之前进行初始化。
ABP框架中国小组(ABPFrameWorkGroup)版权所有 | 版本:1.09
ABP Framework入门开发指南
1.3.4 自定义的模块方法
我们自己定义的模块中可能有方法被其他依赖于当前模块的模块调用,下面的例子,假设模块2依赖于模块1,并且想在预初始化的时候调用模块1的方法。这样,就把模块1注入到了模块2,因此,模块2就能调用模块1的方法了。
阳铭注:
ABP的模块系统与Orchard的模块有类似之处,但还是有比较大的差别。Orchard的框架修改了ASP.NET程序集的默认加载方式(模块的DLL没有放在Bin文件夹下,是放在WEB项目根文件夹下面的Modules文件夹下),实现了功能模块的热插拔,而ABP的模块程序集还是放在Bin文件夹下的,没有实现热插拔。
public class MyModule1 : AbpModule {
public override void Initialize() //初始化模块 {
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());//这里,进行依赖注入的注册。 }
public void MyModuleMethod1() {
//这里写自定义的方法。 } }
[DependsOn(typeof(MyModule1))] public class MyModule2 : AbpModule {
private readonly MyModule1 _myModule1;
public MyModule2(MyModule1 myModule1)
ABP框架中国小组(ABPFrameWorkGroup)版权所有 | 版本:1.010
ABP Framework入门开发指南
{
_myModule1 = myModule1; }
public override void PreInitialize() {
_myModule1.MyModuleMethod1(); //调用MyModuleMethod1的方法。 }
public override void Initialize() {
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()); } }
1.4 启动配置
在应用启动之前,abp框架提供了模块基本的配置和方法,大家参照下面这个例子就可以了。
译者注:
在看这一节的内容之前,建议大家先下载module-zero这个例子代码,这个例子就是一个用户和角色的模块,并且使用的实例。配置在每一个应用中都可能会有,比如你有一个网站,你要获取网站的一些自定义基本参数,比如logo位置,网站名称,上传文件大小等等。模块化的配置方式和我们之前的做法肯定是不同的,大家要注意。之前无非就是一个方法getconfig从对应的表取数据,然后使用。
1.4.1 配置ABP
配置是通过在自己模块的PreInitialize方法中来实现的(对于module的PreInitialize方法,在上一篇中已经向大家做了简单的说明)代码示例如下:
public class SimpleTaskSystemModule : AbpModule {
public override void PreInitialize()
ABP框架中国小组(ABPFrameWorkGroup)版权所有 | 版本:1.011
ABP Framework入门开发指南
{
//在你的应用中添加语言包,这个是英语和作者的土耳其语。
Configuration.Localization.Languages.Add(new LanguageInfo(\\
Configuration.Localization.Languages.Add(new LanguageInfo(\\
Configuration.Localization.Sources.Add( new XmlLocalizationSource( \
HttpContext.Current.Server.MapPath(\ ) );
//配置导航和菜单
Configuration.Navigation.Providers.Add
public override void Initialize() {
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly()); } }
和orchard类似,abp框架一开始就被设计成模块化的,不同的模块可以通过abp框架来进行配置。举个例子吧,不同的模块都可以添加导航,通过导航添加菜单项到自己定义的主菜单,具体的细节大家可以参照:
本地化:http://www.aspnetboilerplate.com/Pages/Documents/Localization 导航:http://www.aspnetboilerplate.com/Pages/Documents/Navigation
ABP框架中国小组(ABPFrameWorkGroup)版权所有 | 版本:1.012
ABP Framework入门开发指南
1.4.2 配置模块
和.net框架原生的启动配置相比较,abp有哪些不一样呢?abp框架的模块可以通过IAbpModuleConfigurations接口进行个性化的扩展,这样的话,模块配置更加简单、方便。
示例代码如下:
using Abp.Web.Configuration; ...
public override void PreInitialize() {
Configuration.Modules.AbpWeb().SendAllExceptionsToClients = true; }
在上面这个例子中,我们通过配置AbpWeb模块,发送异常到客户端。当然了,不是每一个模块都需要这种配置,通常情况下我们需要,是当一个模块需要在多个不同的应用中重复使用,我们才进行这样的配置。 1.4.3 为一个模块创建配置
如下代码,假如我们有一个命名为MyModule的模块,并且这各模块有一些自己的配置。那么我们首先要创建一些类,这些类定义为属性(译者注:属性有自动的get和set访问器。),代表了不同的配置。
public class MyModuleConfig {
public bool SampleConfig1 { get; set; }
public string SampleConfig2 { get; set; } }
接下来,我们通过依赖注入,注册这个类。
IocManager.Register
译者注:
在IocManager中注册了一个类,换句话说,我们通过IocManager可以得到这个类MyModuleConfig的实例。至于IOC的原理这里就不在详细说了,总之,就是可以得到一个类的实例。
ABP框架中国小组(ABPFrameWorkGroup)版权所有 | 版本:1.013
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库ABP开发教程(5)在线全文阅读。
相关推荐: