ABP源码分析十六:DTO的设计

时间:2023-12-27 19:35:13

IDTO:空接口,用于标注Dto对象。

ComboboxItemDto:用于combobox/list中Item的DTO

NameValueDto<T>/NameValueDto:用于name value键值对的DTO, name为string类型, value为泛型或string类型。

ABP源码分析十六:DTO的设计

ABP源码分析十六:DTO的设计


Entity Dto

ABP源码分析十六:DTO的设计

IEntityDto<TPrimaryKey> :基于Entity的DTO,支持泛型类型的主键。

IEntityDto:基于Entity的DTO,只支持int类型的主键。

EntityDto<TPrimaryKey> : 实现IEntityDto<TPrimaryKey>接口。

EntityDto:实现IEntityDto接口

ABP源码分析十六:DTO的设计

CreationAuditedEntityDto<TPrimaryKey> :封装了CreationTime和CreatorUserId的EntityDto,CreatorUserId为可空的long类型,支持泛型类型的主键。

CreationAuditedEntityDto:封装了CreationTime和CreatorUserId的EntityDto,CreatorUserId为可空的long类型,只支持int类型的主键。

AuditedEntityDto<TPrimaryKey> :继承了CreationAuditedEntityDto<TPrimaryKey>,同时封装了LastModificationTime和LastModifierUserId,都是可空类型。LastModifierUserId为长整型。支持泛型类型的主键。

AuditedEntityDto :与AuditedEntityDto<TPrimaryKey>的区别仅在于其只支持int类型的主键。

FullAuditedEntityDto<TPrimaryKey> :继承了AuditedEntityDto<TPrimaryKey>的属性,同时封装了软删除的属性:IsDeleted,以及可空类型的DeleterUserId和DeletionTime,其中DeleterUserId为长整型。

FullAuditedEntityDto :与FullAuditedEntityDto<TPrimaryKey>的区别仅在于其只支持int类型的主键。

ABP源码分析十六:DTO的设计


InPut Dto

IInputDto :用于输入参数的DTO,空接口起标注作用,标识该接口的对象是个DTO,并且需要被validate

EntityRequestInput<TPrimaryKey>  : 封装了entity Id的,作为输入参数的DTO,支持泛型类型的主键Id

EntityRequestInput : 封装了entity Id的,作为输入参数的DTO,只支持int类型的主键Id

ABP源码分析十六:DTO的设计

IDoubleWayDto : 空接口起标注作用,即可以用于输入参数,又可用于结果返回的DTO.

IdInput<TId> :封装了泛型类型的Id的,作为输入参数的DTO

IdInput:封装了int类型的Id的,作为输入参数的DTO

NullableIdInput<TId> : 封装了泛型类型的Id的,作为输入参数的DTO, 同时Id可为空

ABP源码分析十六:DTO的设计

NullableIdInput : 封装了int类型的Id的,作为输入参数的DTO, 同时Id可为空

ABP源码分析十六:DTO的设计


Output Dto

IOutputDto : 作为方法结果返回返回的DTO,空接口起标注作用

EntityResultOutput<TPrimaryKey> :封装了entity Id的,作为结果返回的DTO,支持泛型类型的主键Id

EntityResultOutput : 封装了entity Id的,作为方法结果返回的DTO,只支持int类型的主键Id

ListResultOutput<T> : 以List作为方法结果返回的DTO

PagedResultOutput<T> :  以分页的List作为方法结果返回的DTO

ABP源码分析十六:DTO的设计

ABP源码分析十六:DTO的设计

IHasTotalCount:封装了TotalCount属性。

IListResult<T> :封装了一个IReadOnlyList<T>集合。

ListResultDto<T> :实现了IListResult<T>接口。

IPagedResult<T> :继承了IHasTotalCount和IListResult<T>接口。

PagedResultDto<T> :继承了ListResultDto<T>,同时实现了IPagedResult<T>接口

ABP源码分析十六:DTO的设计

ILimitedResultRequest:封装了MaxResultCount

IPagedResultRequest:封装了SkipCount

ISortedResultRequest:封装了Sorting属性

ABP源码分析十六:DTO的设计

举个例子:QueryableExtensions通过IPagedResultRequest接口对象获取分页的参数

ABP源码分析十六:DTO的设计

返回ABP源码分析系列文章目录