这是一个根据Domain项目中定义的实体对象(Entity)生成符合Clean Architecture原则的Application项目所需要的功能代码,包括常用的Commands,Queries,Vaildator,EventHandle,等等一切可以模板化的代码,是不是非常酷。目前这个项目支持我前段时间发布的CleanArchitecture For Razor Page,适用于visual studio.net 2015以上的所有版本。当然你也完全可以通过修改代码来实现适配自己的项目,也欢迎更多优秀的程序员一起参与该项目的开发

介绍

Technologies

功能



按实体名称生成符合CQRS和DDD模式的所有代码:

  • Events

    • $"Events/{name}CreatedEvent.cs",
    • $"Events/{name}DeletedEvent.cs",
    • $"Events/{name}UpdatedEvent.cs",
  • Commands
    • $"{nameofPlural}/Commands/AddEdit/AddEdit{name}Command.cs",
    • $"{nameofPlural}/Commands/AddEdit/AddEdit{name}CommandValidator.cs",
    • $"{nameofPlural}/Commands/Create/Create{name}Command.cs",
    • $"{nameofPlural}/Commands/Create/Create{name}CommandValidator.cs",
    • $"{nameofPlural}/Commands/Delete/Delete{name}Command.cs",
    • $"{nameofPlural}/Commands/Delete/Delete{name}CommandValidator.cs",
    • $"{nameofPlural}/Commands/Update/Update{name}Command.cs",
    • $"{nameofPlural}/Commands/Update/Update{name}CommandValidator.cs",
    • $"{nameofPlural}/Commands/Import/Import{name}Command.cs",
    • $"{nameofPlural}/Commands/Import/Import{name}CommandValidator.cs",
  • DTOs
    • $"{nameofPlural}/DTOs/{name}Dto.cs",
  • Queries
    • $"{nameofPlural}/Queries/Export/Export{nameofPlural}Query.cs",
    • $"{nameofPlural}/Queries/GetAll/GetAll{nameofPlural}Query.cs",
    • $"{nameofPlural}/Queries/Pagination/{nameofPlural}PaginationQuery.cs",
  • EventHandlers
    • $"{nameofPlural}/EventHandlers/{name}CreatedEventHandler.cs",
    • $"{nameofPlural}/EventHandlers/{name}UpdatedEventHandler.cs",
    • $"{nameofPlural}/EventHandlers/{name}DeletedEventHandler.cs",

sample: AddEditProductCommand.cs

namespace CleanArchitecture.Razor.Application.Features.Products.Commands.AddEdit
{
public class AddEditProductCommand: ProductDto,IRequest<Result>, IMapFrom<Product>
{ } public class AddEditProductCommandHandler : IRequestHandler<AddEditProductCommand, Result>
{
private readonly IApplicationDbContext _context;
private readonly IMapper _mapper;
private readonly IStringLocalizer<AddEditProductCommandHandler> _localizer;
public AddEditProductCommandHandler(
IApplicationDbContext context,
IStringLocalizer<AddEditProductCommandHandler> localizer,
IMapper mapper
)
{
_context = context;
_localizer = localizer;
_mapper = mapper;
}
public async Task<Result> Handle(AddEditProductCommand request, CancellationToken cancellationToken)
{
//TODO:Implementing AddEditProductCommandHandler method
throw new System.NotImplementedException();
}
}
}

已上代码的具体功能我就不在介绍了,代码非常简洁工整。

同时还会生成一份TODO-list方便修改和完善

如何二次开发适配自己项目

选择读取Domain项目中的实体类名

项目代码模板定义

生成的代码

最后

Keep Coding, Enjoy Coding!

如果你喜欢这个项目请上Github点个赞。也欢迎你一起加入开发。

neozhu/CleanArchitectureCodeGenerator

CleanArchitecture Application代码生成插件-让程序员告别CURD Ctrl+C Ctrl+V的更多相关文章

  1. vscode安装rainbow-fart(彩虹屁)插件,程序员只能自我鼓励了!!!

    2020-7-10更新 Rainbow Fart 插件现以发布到 VSCode 商店,安装过 VSIX 版本的用户请卸载之前的版本,从商店安装. 从 VSCode 扩展商店 下载并安装.(更新vsco ...

  2. 程序员为什么要写if else,为什么要和别人不一样

    程序员为什么要写if else,为什么要和别人不一样 前言 无聊,睡不着!本文只是随便写写而已!感叹一下程序员的生活! 刚看到一个八级程序员的分级,所以就写了这个随笔,分级如下:        第八级 ...

  3. ASP.NET的几个试题(《C#与.NET程序员面试宝典》)

    更多参考:博客园笔记 :ASP.NET是什么 ASP.NET不是一种语言,而是创建动态Web页的一种强大的服务器端技术,它是Microsoft.NET Framework中一套用于生成Web应用程序和 ...

  4. 程序员必备,C#各类项目、开源项目插件资料收藏

    一.AOP框架     Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面 ...

  5. 2014年50个程序员最适用的免费JQuery插件

    有用的jQuery库是设计师和开发者之间一个非常熟悉的短语.这是现在互联网中最流行的JavaScript函数库之一.每个设计师和开发人员都应该知道它的重要性,而且熟悉它的功能和特点. jQuery几乎 ...

  6. Java程序员25个必备的Eclipse插件

    原文:http://www.fromdev.com/2012/01/25-best-free-eclipse-plug-ins-for-java.html "工欲善其事, 必先利器" ...

  7. 珍藏版Chrome插件送给你们,不仅是程序员必备

    大家好,消失了几天我又满血复活归来了,最近这几天太忙了一直在加班工作,这不昨天又干到凌晨一点,今天早上七点就起来了,到现在还都没有休息,现在只剩半血了,不对应该说现在只能爬着走了,但是一想到几天没有更 ...

  8. linux 下程序员专用搜索源码用来替代grep的软件ack(后来发现一个更快的: ag), 且有vim插件的

    发现一个比ack更快更好用的:  https://github.com/ggreer/the_silver_searcher   , 使用时命令为ag,它是基于ack的代码二次开发的,所有使用方法基本 ...

  9. 作为一个程序员,分享一下我自己常用的几款非常方便的chrome插件

    作为一名资深码农,结合身边一群IT民工的真实体验,小编有那么一点权威给各位推荐几款程序员必备.常用的chrome扩展插件. 1.Click&Clean Click&Clean插件可以监 ...

随机推荐

  1. Hibernate中用到联合主键的使用方法,为何要序列化,为何要重写hashcode 和 equals 方法

    联合主键用Hibernate注解映射方式主要有三种: 第一.将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将该类注解为 ...

  2. Spirng boot maven多模块

    https://blog.csdn.net/Ser_Bad/article/details/78433340

  3. Java实验项目三——面向对象定义职工类和日期类

    Program:按照如下要求设计类: (1)设计一个日期类,用于记录年.月.日,并提供对日期处理的常用方法. (2)设计一个职工类,该职工类至少具有下面的属性:职工号,姓名,性别,生日,工作部门,参加 ...

  4. ARTS第十二周

    1.Algorithm:每周至少做一个 leetcode 的算法题2.Review:阅读并点评至少一篇英文技术文章3.Tip:学习至少一个技术技巧4.Share:分享一篇有观点和思考的技术文章 以下是 ...

  5. chage 修改用户密码时间限制

    chage [options] LOGIN chage针对用户的密码过期时间.过期提前多少天警示等功能实现,passwd也可以实现,但是passwd --expire参数是直接用户密码过期,强制用户下 ...

  6. React组件三大属性之 refs

    React组件三大属性之 refs refs属性 1) 组件内的标签都可以定义ref属性来标识自己 a. <input type="text" ref={input => ...

  7. 在deeping上安装mariadb

    1,安装的官网参考:有安装的命令和指导https://downloads.mariadb.org/mariadb/repositories/#distro=Debian&distro_rele ...

  8. 二进制方式安装 k8s

    推荐个好用的安装k8s的工具 https://github.com/easzlab/kubeasz 该工具基于二进制方式部署 k8s, 利用 ansible-playbook 实现自动化    1.1 ...

  9. CF404D-DP【成就达成】

    CF404D-DP 正经的东西 题意 给定一个字符串,只包含'0','1','2','*','?'五种字符,其中'?'可被替换为其他任何一种,求使序列符合扫雷地图定义的方案数. 一个数字字符大小表示与 ...

  10. mysqli_fetch_row()函数返回结果的理解

    在PHP处理对数据库查询返回的结果集,即mysqli_query()函数返回的结果集,我们可以把它处理为数组形式以便于处理. 我们一般会用下面四个函数: 1.array mysqli_fetch_ar ...