CommonHelpers.InvokePrivate
0.0.1-beta.1
dotnet add package CommonHelpers.InvokePrivate --version 0.0.1-beta.1
NuGet\Install-Package CommonHelpers.InvokePrivate -Version 0.0.1-beta.1
<PackageReference Include="CommonHelpers.InvokePrivate" Version="0.0.1-beta.1" />
<PackageVersion Include="CommonHelpers.InvokePrivate" Version="0.0.1-beta.1" />
<PackageReference Include="CommonHelpers.InvokePrivate" />
paket add CommonHelpers.InvokePrivate --version 0.0.1-beta.1
#r "nuget: CommonHelpers.InvokePrivate, 0.0.1-beta.1"
#:package CommonHelpers.InvokePrivate@0.0.1-beta.1
#addin nuget:?package=CommonHelpers.InvokePrivate&version=0.0.1-beta.1&prerelease
#tool nuget:?package=CommonHelpers.InvokePrivate&version=0.0.1-beta.1&prerelease
🔍 CommonHelpers.InvokePrivate
Utilitário para invocação dinâmica de membros privados via Reflection com desembrulho automático de exceções de negócio (
ExceptionDispatchInfo), suporte síncrono e assíncrono para .NET 6, .NET 8 e .NET 9.
⚠️ Nota de Boas Práticas & Arquitetura
Este pacote destina-se primariamente a testes de regressão em bibliotecas legadas e cenários diagnósticos pontuais onde o código original não pode ser refatorado.
Para novo desenvolvimento de código de produção, evite quebrar o encapsulamento e prefira modificadores internal combinados com [InternalsVisibleTo].
📦 Instalação
Adicione o pacote ao seu projeto via .NET CLI:
dotnet add package CommonHelpers.InvokePrivate --version 0.0.1-beta.1
Ou através do Gerenciador de Pacotes do Visual Studio:
Install-Package CommonHelpers.InvokePrivate -Version 0.0.1-beta.1
🚀 Como Usar
1. Invocando Métodos Privados com Retorno
using CommonHelpers.InvokePrivate;
var orderCalculator = new OrderCalculator();
// Invoca o método privado "CalculateTax" passando parâmetros
decimal tax = MethodInvoker.InvokePrivateMethod<decimal>(orderCalculator, "CalculateTax", 1000m, "SP");
2. Invocando Métodos Assíncronos (async/await)
var processor = new PaymentProcessor();
// Executa e aguarda a conclusão do método privado assíncrono
await MethodInvoker.InvokePrivateMethodAsync(processor, "ProcessInternalPaymentAsync", orderId);
3. Desembrulho Automático de Exceções
Ao contrário da Reflection padrão que empacota erros em TargetInvocationException, o MethodInvoker desembrulha e relança diretamente a exceção original de negócio (ex: InvalidOperationException, ArgumentException), preservando o StackTrace original.
🏛️ Compatibilidade
- .NET 6.0
- .NET 8.0 (LTS)
- .NET 9.0 (Standard)
- Zero Dependências Externas (100% BCL Pura).
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. 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 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. |
-
net6.0
- No dependencies.
-
net8.0
- No dependencies.
-
net9.0
- 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 |
|---|