Tooark.Extensions 2.1.8

dotnet add package Tooark.Extensions --version 2.1.8
                    
NuGet\Install-Package Tooark.Extensions -Version 2.1.8
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Tooark.Extensions" Version="2.1.8" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Tooark.Extensions" Version="2.1.8" />
                    
Directory.Packages.props
<PackageReference Include="Tooark.Extensions" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Tooark.Extensions --version 2.1.8
                    
#r "nuget: Tooark.Extensions, 2.1.8"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Tooark.Extensions@2.1.8
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Tooark.Extensions&version=2.1.8
                    
Install as a Cake Addin
#tool nuget:?package=Tooark.Extensions&version=2.1.8
                    
Install as a Cake Tool

Tooark.Extensions

Biblioteca gerenciar extensões e utilitários, facilitando o desenvolvimento e a manutenção de projetos .NET.

Configuração

Para utilizar os resources disponíveis, adicione a seguinte linha no seu arquivo .csproj:

<Target Name="CopyNugetContentFiles" AfterTargets="Build">
  <ItemGroup>
    <NugetContentFiles Include="$(NuGetPackageRoot)\**\Resources\**\*.json" />
  </ItemGroup>
  <Copy SourceFiles="@(NugetContentFiles)" DestinationFolder="$(OutDir)Resources" SkipUnchangedFiles="true" />
</Target>

Adicione a seguinte linha no seu arquivo Program.cs:

// Importando o namespace necessário
using Tooark.Extensions.Injections;

// Nas suas configurações de serviços
services.AddTooarkExtensions();

Conteúdo

Extensões

As extensões disponíveis são:

1. Extensão de Enumeráveis

Funcionalidade: Ordenação de coleções de objetos por propriedades específicas e propriedades de sub classes. Suporta ordenação ascendente e descendente de coleções de objetos.

Métodos:

  • OrderByProperty<T>(string sortProperty): Ordena uma coleção de objetos de forma ascendente por uma propriedade específica.
  • OrderByPropertyDescending<T>(string sortProperty): Ordena uma coleção de objetos de forma descendente por uma propriedade específica.

Exemplo de Uso

2. Configuração do JsonStringLocalizer (Extensão Localiza String dentro de Json)

Funcionalidade: Adiciona a injeção de dependência do serviço de localização de strings com base em arquivos JSON.

Métodos:

  • AddJsonStringLocalizer: Adiciona a injeção de dependência do serviço de localização de strings com base em arquivos JSON.

Exemplo de Uso

3. Extensão Localiza String dentro de Json (Extensão para IStringLocalizer)

Funcionalidade: Utiliza os arquivos padrão de recursos multiculturais para localização de strings.

Métodos:

  • LocalizedString this[string name]: Representa um valor localizado.
  • LocalizedString this[string name, params object[] arguments]: Representa um valor localizado com argumentos.
  • GetAllStrings(bool includeParentCultures): Obtém todos os valores localizados. Se includeParentCultures utilizado para valores da cultura default caso true ou current caso false.

Exemplo de Uso

4. Extensões de String

Funcionalidade: Extensões para manipulação de strings.

Métodos:

  • ToBase64: Converte uma string para Base64.
  • FromBase64: Converte uma string Base64 de volta para uma string normal.
  • ToSlug: Converte uma string para um formato de slug.
  • ToNormalize: Normaliza uma string removendo espaços, convertendo para maiúscula e substituindo caracteres especiais.
  • ToNormalizeRegex: Normaliza uma string removendo espaços, convertendo para maiúscula e substituindo caracteres especiais usando expressões regulares.
  • FromSnakeToPascalCase: Converte uma string de snake_case para PascalCase.
  • FromSnakeToCamelCase: Converte uma string de snake_case para camelCase.
  • FromSnakeToKebabCase: Converte uma string de snake_case para kebab-case.
  • FromPascalToSnakeCase: Converte uma string de PascalCase para snake_case.
  • FromCamelToSnakeCase: Converte uma string de camelCase para snake_case.
  • FromKebabToSnakeCase: Converte uma string de kebab-case para snake_case.

Exemplos de Uso

Exemplos de Uso

Extensão de Enumeráveis

OrderByProperty com Parâmetro Simples:

using Tooark.Extensions;

List<MyObject> list = [{"Name": "B", "Age": 20}, {"Name": "A", "Age": 30}, {"Name": "C", "Age": 10}];

var sortedList = list.OrderByProperty("Name").toList();
// [{"Name": "A", "Age": 30}, {"Name": "B", "Age": 20}, {"Name": "C", "Age": 10}]

OrderByPropertyDescending com Parâmetro Simples:

using Tooark.Extensions;

List<MyObject> list = [{"Name": "B", "Age": 20}, {"Name": "A", "Age": 30}, {"Name": "C", "Age": 10}];

var sortedList = list.OrderByPropertyDescending("Name").toList();
// [{"Name": "C", "Age": 10}, {"Name": "B", "Age": 20}, {"Name": "A", "Age": 30}]

OrderByPropertyDescending com Parâmetro Complexo:

using Tooark.Extensions;

List<MyObject> list = [
  {"Name": "B", "Age": 20, "Address": {"City": "City C"}},
  {"Name": "A", "Age": 30, "Address": {"City": "City B"}},
  {"Name": "C", "Age": 10, "Address": {"City": "City A"}}
];

var sortedList = list.OrderByProperty("Address.City").toList();
// [
//  {"Name": "C", "Age": 10, "Address": {"City": "City A"}},
//  {"Name": "A", "Age": 30, "Address": {"City": "City B"}},
//  {"Name": "B", "Age": 20, "Address": {"City": "City C"}}
//]

Configuração do JsonStringLocalizer

using Microsoft.Extensions.DependencyInjection;
using Tooark.Extensions.Options;
using Tooark.Extensions.Injections;

var services = new ServiceCollection();

services.AddJsonStringLocalizer();

Extensão Localiza String dentro de Json (Extensões para IStringLocalizer)

Obter Valor Localizado:

using Tooark.Extensions;

var localizedString = _localizer["Field"]; // "Campo"

Obter Valor Localizado com Argumentos juntos:

using Tooark.Extensions;

var localizedString = _localizer["Field.Empty;Name"]; // "O campo Name está vazio"

Obter Valor Localizado com Argumentos:

using Tooark.Extensions;

var localizedString = _localizer["Field.Empty", "Name"]; // "O campo Name está vazio"

Extensões de String

ToBase64:

using Tooark.Extensions;
string value = "Hello World!";
string base64Value = value.ToBase64(); // SGVsbG8gV29ybGQh

FromBase64:

using Tooark.Extensions;
string base64Value = "SGVsbG8gV29ybGQh";
string normalValue = base64Value.FromBase64(); // Hello World!

ToSlug:

using Tooark.Extensions;
string value = "Hello World!";
string slugValue = value.ToSlug(); // hello-world

ToNormalize:

using Tooark.Extensions;

string value = "Olá Mundo!";
string normalizedValue = value.ToNormalize(); // OLAMUNDO

ToNormalizeRegex:

using Tooark.Extensions;

string value = "Olá Mundo!";
string normalizedValue = value.ToNormalizeRegex(); // OLAMUNDO

FromSnakeToPascalCase:

using Tooark.Extensions;

string value = "hello_world";
string pascalCaseValue = value.FromSnakeToPascalCase(); // HelloWorld

FromSnakeToCamelCase:

using Tooark.Extensions;

string value = "hello_world";
string camelCaseValue = value.FromSnakeToCamelCase(); // helloWorld

FromSnakeToKebabCase:

using Tooark.Extensions;

string value = "hello_world";
string kebabCaseValue = value.FromSnakeToKebabCase(); // hello-world

FromPascalToSnakeCase:

using Tooark.Extensions;

string value = "HelloWorld";
string snakeCaseValue = value.FromPascalToSnakeCase(); // hello_world

FromCamelToSnakeCase:

using Tooark.Extensions;

string value = "helloWorld";
string snakeCaseValue = value.FromCamelToSnakeCase(); // hello_world

FromKebabToSnakeCase:

using Tooark.Extensions;

string value = "hello-world";
string snakeCaseValue = value.FromKebabToSnakeCase(); // hello_world

Arquivos de Recursos Multiculturais

Dependências

Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e pull requests no repositório Tooark.Extensions.

Licença

Este projeto está licenciado sob a licença BSD 3-Clause. Veja o arquivo LICENSE para mais detalhes.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on Tooark.Extensions:

Package Downloads
Tooark.ValueObjects

Package for managing predefined and validated Value Objects for .NET applications.

Tooark.Dtos

Package for managing base DTOs in .NET applications.

Tooark

Package with all Tooark resources for .NET applications.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.1.8 290 6/26/2025
2.1.7 262 6/17/2025
2.1.6 403 6/15/2025
2.1.5 172 6/14/2025
2.1.4 170 6/3/2025
2.1.3.3 165 6/3/2025
2.1.3.2 164 6/3/2025
2.1.3 159 6/3/2025
2.1.2 270 5/17/2025
2.1.1 105 5/3/2025
2.1.0 114 5/3/2025
2.0.8 117 4/26/2025
2.0.7 194 4/22/2025
2.0.6 196 4/20/2025
2.0.5 178 3/14/2025
2.0.4 166 3/14/2025
2.0.3 175 3/14/2025
2.0.2 172 3/13/2025
2.0.1 161 3/13/2025
2.0.0 467 3/13/2025