In .NET Aspire si possono inserire un'enorme quantità di progetti, servizi, applicazioni, tutte perfettamente elencate e gestite all'interno della dashboard. Ma al momento non esiste nessun sistema di archiviazione o categorizzazione delle risorse in modo da facilitarne la visione all'interno dell'interfaccia.
Sarebbe ottimale avere degli extension method che permettano la creazione in primis di un gruppo a cui dare un nome e poi associare una risorsa al gruppo appena creato.
var apiGroup = builder.AddGroup("nome-gruppo-api");
builder.AddProject<Projects.MioProgetto>("mio-progetto")
.InGroup(apiGroup);Come anticipato questo codice non funzionerà, perchè fisicamente non implementato nella piattaforma, ma essendo .NET Aspire completamente personalizzabile, possiamo creare i metodi necessari per gestire l'interfaccia utente e dunque permettere la compilazione della soluzione.
static class AspireHostingExtensions
{
public static IResourceBuilder<Resource> AddGroup
(this IDistributedApplicationBuilder builder, string name) =>
builder.AddResource(new GroupResource(name))
.WithInitialState(new()
{
State = new(KnownResourceStates.Running, KnownResourceStateStyles.Success),
ResourceType = "Group",
Properties = []
});
public static IResourceBuilder<T> InGroup<T>(this IResourceBuilder<T> builder,
IResourceBuilder<IResource> group)
where T : IResource
{
if (builder.Resource.TryGetAnnotationsOfType<ResourceSnapshotAnnotation>(out var annot))
{
foreach (var snapshot in annot)
{
snapshot.InitialSnapshot.GetType().GetProperty("Properties")?.SetValue(snapshot.InitialSnapshot,
snapshot.InitialSnapshot.Properties.Add(new("resource.parentName", "data")));
}
}
else
{
builder.WithInitialState(new()
{
ResourceType = builder.Resource.GetType().Name ?? "Unknown",
Properties =
[
new("resource.parentName", group.Resource.Name),
]
});
}
return builder;
}
class GroupResource(string name) : Resource(name)
{
}
}Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare noopener e noreferrer nei link HTML
Utilizzo di CSS Scroll Snap per realizzare un carousel
Gestione delle scrollbar dinamiche in HTML e CSS
Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
Definire il metodo di rilascio in .NET Aspire
Utilizzare zizmor per rendere più sicuri i workflow di GitHub
From Data to Insight: Exploratory Data Analysis with Python, VS Code and SQL MCP Server
Nuove validazioni Form Blazor
Arricchire l'interfaccia di .NET Aspire
Costruire endpoint SSE in ASP.NET Core
Validare i dati di una colonna JSON in SQL Server
Modificare lo stile in una QuickGrid Blazor


