ABP框架教程:使用ABP Suite开发Web应用(第五部分)——自定义生成代码

ABP框架教程:使用ABP Suite开发Web应用(第五部分)——自定义生成代码

abp Open-source web application framework for ASP.NET Core! Offers an opinionated architecture to build enterprise software solutions with best practices on top of the .NET. Provides the fundamental infrastructure, cross-cutting-concern implementations, startup templates, application modules, UI themes, tooling and documentation. abp 项目地址: https://gitcode.com/gh_mirrors/abp1/abp

前言

在前四部分教程中,我们使用ABP Suite工具完整构建了一个书店应用的所有功能,而无需编写任何代码。本部分将重点介绍ABP Suite的一个重要特性——可自定义代码支持,让开发者能够在自动生成的代码基础上进行灵活扩展。

可自定义代码支持机制

ABP Suite通过以下方式实现代码自定义保护:

  1. 抽象基类设计:为实体、应用服务、接口等生成抽象基类
  2. 扩展文件分离:将自定义代码放在*.Extended.cs扩展文件中
  3. 标记占位符:在UI文件中使用特殊注释标记可自定义区域

这种设计确保了在重新生成CRUD页面时,开发者的自定义代码不会被覆盖。

后端自定义实现

自定义服务层示例

假设我们需要在作者名称后显示缩写形式(如"J.R.R.T"),可以通过以下步骤实现:

  1. 定位到BooksAppService.Extended.cs文件
  2. 重写基类的GetListAsync方法:
public override async Task<PagedResultDto<BookWithNavigationPropertiesDto>> GetListAsync(GetBooksInput input)
{
    var result = await base.GetListAsync(input);

    foreach (var book in result.Items)
    {
        var akaName = book.Author.Name.Split(" ")
            .Select(q => q[0])
            .JoinAsString(".");
        book.Author.Name += $" (a.k.a {akaName})";
    }
    
    return result;
}

技术要点说明

  • 继承自BooksAppServiceBase基类
  • 实现IBooksAppService接口
  • 通过base关键字调用原始实现
  • 修改返回结果前先获取基础数据

前端自定义实现

根据不同UI框架,自定义方式略有差异:

MVC/Blazor实现方式

在视图文件中查找如下标记区域:

@*//<suite-custom-code-block-1>*@
@*//自定义代码写在这里*@
@*//</suite-custom-code-block-1>*@

Angular实现方式

组件分为:

  • .abstract.component.ts(每次重新生成)
  • .component.ts(仅生成一次)

在HTML模板中使用:

<!--<suite-custom-code-block-0>-->
<!-- 自定义内容写在这里 -->
<!--</suite-custom-code-block-0>-->

自定义代码最佳实践

  1. 单一职责原则:每个自定义代码块只处理一个特定功能
  2. 注释说明:在自定义代码处添加详细注释
  3. 版本控制:建议将扩展文件纳入版本管理
  4. 模板定制:可通过编辑模板添加更多自定义点

验证与测试

完成自定义后:

  1. 通过ABP Suite重新生成书籍实体
  2. 检查Extended文件是否保留自定义代码
  3. 运行应用查看效果:

作者名称显示效果

总结

ABP Suite的可自定义代码支持为开发者提供了:

  • 自动化代码生成的基础框架
  • 灵活扩展的定制能力
  • 安全的代码保护机制
  • 规范的代码组织结构

这种设计既保持了开发效率,又满足了项目个性化需求,是ABP框架强大生产力的重要体现。

提示:在实际项目中,建议先通过Suite生成基础代码,再根据业务需求逐步添加自定义实现,这样能获得最佳的开发体验。

abp Open-source web application framework for ASP.NET Core! Offers an opinionated architecture to build enterprise software solutions with best practices on top of the .NET. Provides the fundamental infrastructure, cross-cutting-concern implementations, startup templates, application modules, UI themes, tooling and documentation. abp 项目地址: https://gitcode.com/gh_mirrors/abp1/abp

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

段日诗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值