TL.ObjectExtensionsLibrary
0.4.2
See the version list below for details.
dotnet add package TL.ObjectExtensionsLibrary --version 0.4.2
NuGet\Install-Package TL.ObjectExtensionsLibrary -Version 0.4.2
<PackageReference Include="TL.ObjectExtensionsLibrary" Version="0.4.2" />
<PackageVersion Include="TL.ObjectExtensionsLibrary" Version="0.4.2" />
<PackageReference Include="TL.ObjectExtensionsLibrary" />
paket add TL.ObjectExtensionsLibrary --version 0.4.2
#r "nuget: TL.ObjectExtensionsLibrary, 0.4.2"
#:package TL.ObjectExtensionsLibrary@0.4.2
#addin nuget:?package=TL.ObjectExtensionsLibrary&version=0.4.2
#tool nuget:?package=TL.ObjectExtensionsLibrary&version=0.4.2
🧩 TL.ObjectExtensionsLibrary
Handy C# object extensions: pre-configured JSON serialization, dictionary/Expando conversion, deep cloning, and cached property access.
Utilitários práticos para objetos em C#: serialização JSON pré-configurada, conversões para dicionário/Expando, clonagem e reflexão com cache.
O TL.ObjectExtensionsLibrary disponibiliza métodos utilitários genéricos para qualquer instância derivada de System.Object, facilitando clonagem profunda (deep cloning), conversões para dicionários e ExpandoObject, serialização de dados e invocação reflexiva com preservação do stack trace original.
📦 Instalação
Adicione o pacote ao seu projeto através do .NET CLI:
dotnet add package TL.ObjectExtensionsLibrary
🚀 Funcionalidades Principais
| Método | Retorno | Descrição |
|---|---|---|
Clone() |
T |
Realiza a clonagem profunda (deep copy) completa do grafo do objeto em memória. |
ToExpando() |
ExpandoObject |
Converte o objeto POCO em uma estrutura dinâmica expansível em tempo de execução. |
Dictionary() |
IDictionary<string, object?> |
Converte todas as propriedades públicas do objeto em um dicionário chave/valor. |
Bytes() |
byte[] |
Converte o objeto serializado para representação em array de bytes. |
InvokeMethod(method, ...args) |
object? |
Invoca dinamicamente um método por nome preservando a causa raiz original de exceções. |
TryGetProperty(prop, out val) |
bool |
Tenta ler o valor de uma propriedade pública sem disparar exceções caso ausente. |
SetProperty(prop, value) |
void |
Atribui valor à propriedade pelo nome informado via reflexão. |
PropertiesEqual(other) |
bool |
Compara se os valores de todas as propriedades públicas são idênticos entre dois objetos. |
IsDefault() |
bool |
Verifica se o valor da instância corresponde ao default do seu tipo. |
Serialize() |
string |
Serializa o objeto diretamente para formato JSON compacto. |
ToJsonIndented() |
string |
Serializa o objeto para JSON formatado e indentado (pretty-print). |
💡 Exemplos de Uso
using System;
using ObjectExtensionsLibrary;
public class Configuracao
{
public string Servidor { get; set; } = "localhost";
public int Porta { get; set; } = 8080;
public bool Habilitado { get; set; } = true;
}
public class Exemplo
{
public void Executar()
{
var config = new Configuracao();
// 1. Clonagem Profunda Independente
var copia = config.Clone();
copia.Porta = 9000;
// 2. Comparação de Propriedades
bool saoIguais = config.PropertiesEqual(copia); // false
// 3. Conversão para Dicionário
var mapa = config.Dictionary();
// 4. Transformação para ExpandoObject Dinâmico
dynamic expando = config.ToExpando();
}
}
🏛️ Decisões Arquiteturais
Para detalhes sobre clonagem profunda, desembrulho de TargetInvocationException e convenções de reflexão, consulte:
📄 Licença
Distribuído sob a licença MIT.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- System.Text.Json (>= 8.0.5)
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on TL.ObjectExtensionsLibrary:
| Package | Downloads |
|---|---|
|
TL.ExtensionLibrary.Application
Clean Architecture Application metapackage: application orchestration, object utilities, and identity extensions, transitively including Domain. |
GitHub repositories
This package is not used by any popular GitHub repositories.