ABP源码分析十六:DTO的设计
IDTO:空接口,用于标注Dto对象。
ComboboxItemDto:用于combobox/list中Item的DTO
NameValueDto<T>/NameValueDto:用于name value键值对的DTO, name为string类型, value为泛型或string类型。
Entity Dto
IEntityDto<TPrimaryKey> :基于Entity的DTO,支持泛型类型的主键。
IEntityDto:基于Entity的DTO,只支持int类型的主键。
EntityDto<TPrimaryKey> : 实现IEntityDto<TPrimaryKey>接口。
EntityDto:实现IEntityDto接口
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类型的主键。
InPut Dto
IInputDto :用于输入参数的DTO,空接口起标注作用,标识该接口的对象是个DTO,并且需要被validate
EntityRequestInput<TPrimaryKey> : 封装了entity Id的,作为输入参数的DTO,支持泛型类型的主键Id
EntityRequestInput : 封装了entity Id的,作为输入参数的DTO,只支持int类型的主键Id
IDoubleWayDto : 空接口起标注作用,即可以用于输入参数,又可用于结果返回的DTO.
IdInput<TId> :封装了泛型类型的Id的,作为输入参数的DTO
IdInput:封装了int类型的Id的,作为输入参数的DTO
NullableIdInput<TId> : 封装了泛型类型的Id的,作为输入参数的DTO, 同时Id可为空
NullableIdInput : 封装了int类型的Id的,作为输入参数的DTO, 同时Id可为空
Output Dto
IOutputDto : 作为方法结果返回返回的DTO,空接口起标注作用
EntityResultOutput<TPrimaryKey> :封装了entity Id的,作为结果返回的DTO,支持泛型类型的主键Id
EntityResultOutput : 封装了entity Id的,作为方法结果返回的DTO,只支持int类型的主键Id
ListResultOutput<T> : 以List作为方法结果返回的DTO
PagedResultOutput<T> : 以分页的List作为方法结果返回的DTO
IHasTotalCount:封装了TotalCount属性。
IListResult<T> :封装了一个IReadOnlyList<T>集合。
ListResultDto<T> :实现了IListResult<T>接口。
IPagedResult<T> :继承了IHasTotalCount和IListResult<T>接口。
PagedResultDto<T> :继承了ListResultDto<T>,同时实现了IPagedResult<T>接口
ILimitedResultRequest:封装了MaxResultCount
IPagedResultRequest:封装了SkipCount
ISortedResultRequest:封装了Sorting属性
举个例子:QueryableExtensions通过IPagedResultRequest接口对象获取分页的参数