TKMaster.Common.Toolkit
1.2.1
dotnet add package TKMaster.Common.Toolkit --version 1.2.1
NuGet\Install-Package TKMaster.Common.Toolkit -Version 1.2.1
<PackageReference Include="TKMaster.Common.Toolkit" Version="1.2.1" />
<PackageVersion Include="TKMaster.Common.Toolkit" Version="1.2.1" />
<PackageReference Include="TKMaster.Common.Toolkit" />
paket add TKMaster.Common.Toolkit --version 1.2.1
#r "nuget: TKMaster.Common.Toolkit, 1.2.1"
#:package TKMaster.Common.Toolkit@1.2.1
#addin nuget:?package=TKMaster.Common.Toolkit&version=1.2.1
#tool nuget:?package=TKMaster.Common.Toolkit&version=1.2.1
📦 Estrutura dos Projetos
Esta solução é composta por vários projetos do tipo Class Library, cada um com responsabilidades bem definidas e organizados em grupos lógicos na Solution:
🔹 Util
- Extensions: Métodos de extensão como
GetDescription,GetTypeAttribute, eNotFound(com suporte a gênero). - Mensagens e Responses:
- Responses padronizados (
ResponseSuccess<T>,ResponseFailure,ResponsePaged<T>) para unificar o retorno das APIs. - ResponseFactory para criação centralizada de respostas.
- Responses padronizados (
- LoggerFactoryConfiguration: Configuração e personalização do sistema de logging.
- GlobalizationConfiguration: Suporte à internacionalização, com recursos de tradução e formatos regionais.
- Dictionaries: Classe utilitária que fornece listas fixas (Dictionary<int, string>) para preenchimento de comboboxes e enums simulados no frontend (ex: status, meses, modalidades de curso etc).
- EmailServiceDependencyInjection: Método de extensão para facilitar o registro de serviços de envio de e-mail via
IServiceCollection.
🔹 Domain
- Interfaces: Contratos de serviços, repositórios e entidades.
- RepositoryBase / IRepositoryBase: Implementação do padrão repositório genérico para facilitar o acesso e manipulação de dados com suporte a operações assíncronas.
- Services: Lógica de negócio reutilizável.
- Entities: Representações de dados e modelos base.
- Notifications: Sistema de notificações para regras de negócio e feedbacks.
- Filters: Classe abstrata
FilterBase. - Email: Modelos de envio (
GenericEmailModel) e configuração SMTP (EmailEntityModel), além do enumEmailType.
🔹 Logger
- CustomLogger: Implementação de logger customizado.
- CustomLoggerProvider: Provedor adaptável para integração com diversos sistemas de log.
- CustomLoggerProviderConfiguration: Configurações ajustáveis para múltiplos ambientes.
🔹 Application
- Filters: Classe abstrata
FilterBaseDTO. - DTOs de Paginação:
PaginationDTO<T>para retorno paginado no nível de aplicação.
🔹 Infrastructure.Email
- GenericEmailService: Implementação genérica de envio de e-mails via
SmtpClient, com suporte a múltiplos tipos (EmailType), corpo HTML, anexos e configuração por injeção de dependência.
🔹 HTTP (TKMaster.Common.Http)
- BaseHttpService / IBaseHttpService: Serviço base para chamadas HTTP utilizando
HttpClientFactorye retorno nos padrões de Responses. - ResponseExtensionAPI: Métodos de extensão para simplificar o consumo de endpoints HTTP (
ToResponse,ToResponseList,ToResponsePaged). - ServiceCollectionExtensions: Método
AddCommonHttpServices()para registrar o módulo HTTP e configurarIHttpClientFactoryde forma centralizada. - ResponseAPIConfig: Inicialização do
ResponseExtensionAPIvia injeção de dependência.
⚙️ Funcionalidades Principais
✅ QueryHelper - Filtros e Ordenação Dinâmica
ApplyFilter<TFilter, TEntity>
Aplica filtros dinâmicos em uma consulta IQueryable<TEntity> usando um objeto TFilter. Apenas propriedades marcadas com [Filterable] são consideradas.
Características:
- Suporte a
==,>=,<=,Contains - Intervalos com sufixos
FromeTo - Ignora propriedades nulas ou vazias
Exemplo:
var result = QueryHelper.ApplyFilter<CourseFilter, CourseEntity>(query, filter);
ApplySorting<T>
Ordenação dinâmica baseada no nome da propriedade e direção (asc ou desc).
Exemplo:
var sorted = QueryHelper.ApplySorting<CourseEntity>(query, "Title", "desc");
📄 Responses Padronizados
ResponseSuccess<T>→ Retorno genérico comDatae flag de sucesso.ResponseFailure→ Retorno para erros com lista de mensagens.ResponsePaged<T>→ Retorno padronizado para dados paginados usandoPaginationDTO<T>.ResponseFactory→ Criação simplificada de Responses em Controllers.
Exemplo em Controller:
return ResponseFactory.Success(new UserDTO { Id = 1, Name = "Teste" });
📦 Pagination
Pagination<T>→ Uso interno no domínio para paginação genérica.PaginationDTO<T>→ Retorno paginado em DTOs na camada Application.ResponsePaged<T>→ Resposta HTTP unificandoPaginationDTO<T>com status de sucesso.
🗂️ Repository Pattern
O projeto TKMaster.Common.Domain implementa repositório genérico (IRepositoryBase e RepositoryBase) com:
- Métodos de busca (GetByCodeAsync, GetByNameAsync, SearchAsync)
- Manipulação (ToAdd, ToUpdate, Remove)
- Persistência (ToSaveAsync, SaveIdentityAsync)
💡 Extensões Incluídas
NotFound(this string subject, bool isFeminine)- Métodos utilitários para strings, enums e expressões
- Extensões para consumo HTTP com
HttpCliente Responses padronizados
📦 Dependências Necessárias
dotnet add package System.Linq.Dynamic.Core
using TKMaster.Common.Util.Helpers;
🚀 Sugestões Futuras
- Suporte a filtros
List<int>eList<string> - Filtros compostos
AND/OR - Integração automática com Swagger para exibir metadados de filtros
🛠️ Tecnologias
📄 Licença
Este projeto é licenciado sob os termos da licença MIT. Consulte o arquivo LICENSE para mais informações.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.2.1 | 216 | 8/10/2025 |
| 1.2.0 | 191 | 8/9/2025 |
| 1.1.0 | 359 | 7/25/2025 |
| 1.0.15 | 545 | 7/21/2025 |
| 1.0.14 | 404 | 7/20/2025 |
| 1.0.13 | 183 | 4/19/2025 |
| 1.0.12 | 260 | 4/13/2025 |
| 1.0.11 | 261 | 4/13/2025 |
| 1.0.10 | 221 | 4/13/2025 |
| 1.0.9 | 179 | 4/5/2025 |
| 1.0.8 | 161 | 4/5/2025 |
| 1.0.7 | 161 | 4/5/2025 |
| 1.0.6 | 197 | 4/5/2025 |
| 1.0.3 | 162 | 3/29/2025 |
📦 Versão 1.2.1 – Módulo HTTP, Respostas Padronizadas e Melhorias Gerais
✅ Novo Módulo: Consumo de APIs HTTP
Foi adicionado um módulo genérico para facilitar a comunicação com APIs externas, incluindo:
BaseService: Classe base para requisições HTTP (GET, POST, PUT, DELETE) com suporte a autenticação via Bearer Token.
IBaseService: Contrato padronizado para serviços HTTP reutilizáveis.
ResponseExtensionAPI: Métodos de extensão para converter requisições em respostas tipadas.
ResponseAPIConfig: Configuração simples para inicialização do módulo via UseResponseApi.
AddCommonHttpServices: Registro facilitado de serviços HTTP com IServiceCollection.
✅ Unificação e Padronização de Respostas
Nova ResponseFactory para criar respostas padronizadas de sucesso e falha.
ResponseSuccess, ResponseFailure e ResponsePaged: respostas unificadas com suporte a paginação (PaginationDTO).
Remoção de duplicidades das classes antigas de resposta, mantendo compatibilidade com novos endpoints.
🛠️ Melhorias de Organização
Criação do projeto TKMaster.Common.Http para concentrar serviços e extensões relacionados a comunicação HTTP.
Padronização de namespaces e separação lógica entre Domain, Util e Http.
Ajustes na estrutura para melhor organização em soluções com múltiplos projetos.
🔄 Manutenção e Estabilidade
Funcionalidades anteriores, como filtros dinâmicos, ordenação, repositório genérico, logging customizado, envio de e-mails e globalização, permanecem estáveis e compatíveis.
Nenhuma quebra de compatibilidade com a versão 1.2.1.
Melhorias