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
Installare le Web App site extension tramite una pipeline di Azure DevOps
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Usare un KeyedService di default in ASP.NET Core 8
Inizializzare i container in Azure Container Apps
Definire stili a livello di libreria in Angular
Applicare il versioning ai nostri endpoint ASP.NET Core Minimal API
Disabilitare automaticamente un workflow di GitHub
Aggiungere interattività lato server in Blazor 8
Eseguire attività basate su eventi con Azure Container Jobs
Migrare una service connection a workload identity federation in Azure DevOps
Ottenere il contenuto di una cartella FTP con la libreria FluentFTP
Criptare la comunicazione con mTLS in Azure Container Apps
I più letti di oggi
- Utilizzare WebAssembly con .NET, ovunque
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- Utilizzare il trigger SQL con le Azure Function
- Ottimizzazione dei block template in Angular 17
- Disabilitare automaticamente un workflow di GitHub (parte 2)