KempDec.StarterDotNet.Reflection 0.3.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package KempDec.StarterDotNet.Reflection --version 0.3.0
NuGet\Install-Package KempDec.StarterDotNet.Reflection -Version 0.3.0
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="KempDec.StarterDotNet.Reflection" Version="0.3.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add KempDec.StarterDotNet.Reflection --version 0.3.0
#r "nuget: KempDec.StarterDotNet.Reflection, 0.3.0"
#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.
// Install KempDec.StarterDotNet.Reflection as a Cake Addin
#addin nuget:?package=KempDec.StarterDotNet.Reflection&version=0.3.0

// Install KempDec.StarterDotNet.Reflection as a Cake Tool
#tool nuget:?package=KempDec.StarterDotNet.Reflection&version=0.3.0

StarterDotNet

StarterDotNet é uma biblioteca que fornece utilitários para projetos .NET.

Índice

Instalação

Instale a biblioteca a partir do NuGet.

Install-Package KempDec.StarterDotNet

Esse pacote incluirá tudo do StarterDotNet, mas você pode optar por instalar apenas uma parte dele. Para isso consulte a seção que deseja.

.NET Reflection

Instalação

Você pode optar por instalar apenas essa parte da biblioteca a partir do NuGet.

Install-Package KempDec.StarterDotNet.Reflection

Como usar

Você pode usar os métodos de extensão do StarterDotNet Reflection para te ajudar ao usar Reflection do .NET. Exemplo:

Assembly.GetExecutionAssembly()
    .GetAllClassesWithInterface<T>();

Você também pode usar AssemblyHelper para acessar os mesmos métodos de extensão do assembly em execução. Exemplo:

AssemblyHelper.GetAllClassesWithInterface<T>();

Os métodos de extensão disponíveis são:

  • GetAllClassesWithInterface<T>() - Obtém todas as classes do assembly especificado, se houver alguma, que implemente o tipo da interface especificado.
public static IEnumerable<T?> GetAllClassesWithInterface<T>(this Assembly assembly);
  • GetAllClassesWithInterface<T>(Type interfaceType) - Obtém todas as classes do assembly especificado, se houver alguma, que implemente o tipo da interface especificado.
public static IEnumerable<T?> GetAllClassesWithInterface<T>(this Assembly assembly, Type interfaceType);
  • GetAllClassesWithInterface(Type interfaceType) - Obtém os tipos de todas as classes do assembly especificado, se houver alguma, que implemente o tipo da interface especificado.
public static IEnumerable<Type> GetAllClassesWithInterface(this Assembly assembly, Type interfaceType);

ASP.NET Core Identity

Instalação

Você pode optar por instalar apenas essa parte da biblioteca a partir do NuGet.

Install-Package KempDec.StarterDotNet.Identity

Como usar

Você pode usar a extensão GetPropertyName() para ajudá-lo em validações de erros do ASP.NET Core Identity.

Ele é útil quando você usa um modelo de validação que relaciona o nome da propriedade com o erro, como DataAnnotation ou FluentValidation.

IdentityResult result = await UserManager.CreateAsync(user, _input.Password);

if (!result.Suceeded)
{
    // Neste caso os erros de nome de usuário terão o nome da propriedade como "Email".
    // 
    // As propriedades já tem nomes definidos por padrão que são comumente usados, como os erros de e-mail,
    // que terão o nome da propriedade como "Email" a menos que você mude, assim como acontece abaixo com os
    // erros de nome de usuário.
    var propertyNames = new IdentityErrorPropertiesName(username: nameof(_input.Email));

    foreach (IdentityError error in result.Errors)
    {
        string propertyName = error.GetPropertyName(propertyNames);

        ModelState.AddModelError(propertyName, error.Description);
    }
}

Rotas do aplicativo

Instalação

Você pode optar por instalar apenas essa parte da biblioteca a partir do NuGet.

Install-Package KempDec.StarterDotNet.AppRoutes

Como usar

Você pode usar IAppRoute e AppRouteBase para ajudá-lo a usar as rotas do seu aplicativo.

Eles permitem que você pré-construa as rotas e depois apenas as usem de forma fácil e clara, definindo todos os parâmetros que são necessários e facilitando a manutenção do código caso alguma regra na sua rota mude.

@* Ao invés de: *@
<a href="/profile/@_profile.Id/orderhistory?status=@_orderStatus"></a>
<a href="/start?email=@_email"></a>
<a href="/start?email=@_email&redirectUrl=@_currentUrl"></a>

@* Use algo como: *@
<a href="@AppRoute.Profile.OrderHistory(_profile.Id, _orderStatus)"></a>
<a href="@AppRoute.Start(_email)"></a>
<a href="@AppRoute.Start(_email, _currentUrl)"></a>

Para isso, crie uma rota do aplicativo, de maneira semelhante a abaixo:

// Rota da página /start.
public sealed class StartAppRoute(string? email = null, string? redirectUrl = null) : AppRouteBase("/start")
{
    protected override Dictionary<string, string?> Params { get; } = new()
    {
        { "email", email },
        { "redirectUrl", redirectUrl }
    };
}

// Rota da página /profile/{profileId}/orderhistory.
public sealed class OrderHistoryAppRoute(int profileId, OrderStatusType? orderStatus = null)
    : AppRouteBase($"/profile/{profileId}/orderhistory")
{
    protected override Dictionary<string, string?> Params { get; } = new()
    {
        { "status", orderStatus?.ToString() }
    };
}

// Conjunto de rotas para /profile.
public sealed class ProfilesAppRoute
{
    public OrderHistoryAppRoute OrderHistory(int profileId, OrderStatusType? orderStatus = null) =>
        new(profileId, orderStatus);
}

E então pré-construa as rotas em uma classe estática:

public static class AppRoute
{
    // Rotas para /profile.
    public static ProfilesAppRoute Profile { get; } = new();

    // Rota /start.
    public static StartAppRoute Start(string? email = null) => new(email);
}

Autores

Notas de lançamento

Para notas de lançamento, confira a seção de releases do StarterDotNet.

Licença

MIT

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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on KempDec.StarterDotNet.Reflection:

Package Downloads
KempDec.StarterDotNet

StarterDotNet é uma biblioteca que fornece utilitários para projetos .NET.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.13.0 109 4/8/2024
0.12.0 84 4/5/2024
0.11.2 85 3/20/2024
0.11.1 161 1/18/2024
0.3.1 222 12/10/2023
0.3.0 106 12/9/2023