TKMaster.Common.Toolkit
1.0.12
See the version list below for details.
dotnet add package TKMaster.Common.Toolkit --version 1.0.12
NuGet\Install-Package TKMaster.Common.Toolkit -Version 1.0.12
<PackageReference Include="TKMaster.Common.Toolkit" Version="1.0.12" />
<PackageVersion Include="TKMaster.Common.Toolkit" Version="1.0.12" />
<PackageReference Include="TKMaster.Common.Toolkit" />
paket add TKMaster.Common.Toolkit --version 1.0.12
#r "nuget: TKMaster.Common.Toolkit, 1.0.12"
#:package TKMaster.Common.Toolkit@1.0.12
#addin nuget:?package=TKMaster.Common.Toolkit&version=1.0.12
#tool nuget:?package=TKMaster.Common.Toolkit&version=1.0.12
TKMaster.Common.Toolkit
TKMaster.Common é uma biblioteca reutilizável desenvolvida para projetos em C#. Ela centraliza componentes comuns e utilitários que podem ser facilmente integrados em qualquer aplicação, promovendo reutilização, padronização e produtividade.
📦 Estrutura dos Projetos
Esta solução é composta por vários projetos do tipo Class Library, cada um com responsabilidades bem definidas:
🔹 Util
- Extensions: Métodos de extensão como
GetDescription
,GetTypeAttribute
, eNotFound
(com suporte a gênero). - Mensagens e Responses: Utilitários para mensagens consistentes e respostas padronizadas.
- LoggerFactoryConfiguration: Configuração e personalização do sistema de logging.
- GlobalizationConfiguration: Suporte à internacionalização, com recursos de tradução e formatos regionais.
🔹 Domain
- Interfaces: Contratos de serviços e entidades e repositórios.
- 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.
🔹 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.
⚙️ 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
From
eTo
- Ignora propriedades nulas ou vazias
Exemplo:
var result = QueryHelper.ApplyFilter<CourseFilter, CourseEntity>(query, filter);
ApplySorting<T>
Aplica ordenação dinâmica com base na propriedade e direção informada (asc
ou desc
).
Exemplo:
var sorted = QueryHelper.ApplySorting<CourseEntity>(query, "Title", "desc");
🗂️ Repository Pattern - Repositório Genérico
O projeto TKMaster.Common.Domain
implementa um repositório genérico baseado no padrão Repository, com a interface IRepositoryBase<TEntity>
e sua respectiva implementação RepositoryBase<TEntity>
. Essa estrutura fornece uma forma padronizada de realizar operações de dados com suporte a LINQ, IQueryable
e métodos assíncronos.
Busca e Consulta
GetByCodeAsync(int code)
GetByNameAsync(string name)
SearchAsync(Expression<Func<TEntity, bool>> predicate)
ListAllAsync()
ExistAsync(int code)
ToObtain()
→ RetornaIQueryable<TEntity>
para composições avançadas
Manipulação de Dados
ToAdd(...)
,ToUpdate(...)
,Remover(...)
com sobrecargas para entidades únicas ou múltiplas- Suporte à atualização e persistência em dois contextos: principal e de identidade
Persistência
ToSaveAsync()
para salvar no contexto principalSaveIdentityAsync()
para salvar alterações no contexto de identidade
🔄 Benefícios
- Reutilização de lógica de acesso a dados
- Centralização das operações CRUD
- Interface desacoplada facilita testes e manutenção
- Suporte a múltiplos contextos (
DbContext
eIdentityContext
)
💡 Extensões Incluídas
NotFound(this string subject, bool isFeminine)
: Gera mensagens padronizadas com concordância de gênero.- Diversos métodos utilitários para manipulação de strings, enums e expressões.
📦 Dependências Necessárias
dotnet add package System.Linq.Dynamic.Core
using TKMaster.Common.Util.Helpers;
🚀 Sugestões Futuras
- Suporte a
List<int>
eList<string>
comContains
- Combinação de filtros
AND
/OR
- Tradução de nomes de campos com
[Filterable("Contains", Target = "Title,Description")]
- Integração com Swagger para exibição de filtros dinamicamente
🛠️ Tecnologias
📄 Licença
Este projeto é licenciado sob os termos da licença MIT. Consulte o arquivo LICENSE.txt 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.
Versão 1.0.12
- Inclusão de RepositoryBase genérico com TEntity e TContext.
- Interface IRepositoryBase atualizada.
- Suporte a DbContext opcional de identidade.
- Manutenção das funcionalidades de filtros dinâmicos e ordenação.