KempDec.StarterDotNet.Reflection
0.3.0
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
<PackageReference Include="KempDec.StarterDotNet.Reflection" Version="0.3.0" />
paket add KempDec.StarterDotNet.Reflection --version 0.3.0
#r "nuget: KempDec.StarterDotNet.Reflection, 0.3.0"
// 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
- .NET Reflection
- ASP.NET Core Identity
- Rotas do aplicativo
- Autores
- Notas de lançamento
- Licença
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
- KempDec - Mantedora do projeto de código aberto.
- Vinícius Lima - Desenvolvedor .NET C#.
Notas de lançamento
Para notas de lançamento, confira a seção de releases do StarterDotNet.
Licença
Product | Versions 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. |
-
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.