Il Managed Extensibility Framework (MEF) è in grado di caricare le dipendenze e i tipi attraverso molteplici Catalog, dove può fare riferimento per cercare le definizioni, ma qualora non si trovi quello adatto alle proprie esigenze è possibile crearne di personalizzati.
Abbinando al DirectoryCatalog un FileSystemWatcher, è possibile ottenere un nuovo Catalog che, sfruttando la Recomposition, consente di monitorare la directory in cui sono archiviate le Parts e rilavarne la presenza di nuove, inserendole nel container in fase di avvio (comportamento predefinito del DirectoryCatalog) e anche a runtime, ad ogni modifica della cartella.
public class MonitoredDirectoryCatalog : DirectoryCatalog
{
private FileSystemWatcher monitor;
// costruttore base cerca solo file dll, formato standard
public MonitoredDirectoryCatalog(string path) : base(path, "*.dll")
{
monitor = new FileSystemWatcher(path);
monitor.Changed += new FileSystemEventHandler(monitor_Changed);
monitor.EnableRaisingEvents = true;
}
// costruttore base cerca in base al filter personalizzato
public MonitoredDirectoryCatalog(string path, string filter) : base(path, filter)
{
monitor = new FileSystemWatcher(path);
monitor.Filter = filter;
monitor.Changed += new FileSystemEventHandler(monitor_Changed);
monitor.EnableRaisingEvents = true;
}
void monitor_Changed(object sender, FileSystemEventArgs e)
{
this.Refresh();
}
}Nello script si mostra, quindi, come creare un MonitoredDirectoryCatalog che, intercettando l'evento Changed della classe FileSystemWatcher, aggiorna il catalogo ricomponendo le Parts.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Autenticazione di git tramite Microsoft Entra ID in Azure DevOps
Ridimensionamento automatico input tramite CSS
Recuperare le subissue e il loro stato di completamento in GitHub
Arricchire l'interfaccia di .NET Aspire
La gestione della riconnessione al server di Blazor in .NET 9
Creare una libreria CSS universale: Immagini
Rendere le variabili read-only in una pipeline di Azure DevOps
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Creare un agente A2Acon Azure Logic Apps
Gestire pubblicazione Kubernetes tramite .NET Aspire
Configurare lo startup di applicazioni server e client con .NET Aspire
Gestione CSS in Blazor con .NET 9
I più letti di oggi
- Sfruttare una CDN con i bundle di ASP.NET
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Gli oggetti CallOut di Expression Blend 4.0
- Le DirectInk API nella Universal Windows Platform
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Inserire le news di Punto Informatico nel proprio sito


