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
Accesso sicuro ai secrets attraverso i file in Azure Container Apps
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Utilizzare un service principal per accedere a Azure Container Registry
Creare un'applicazione React e configurare Tailwind CSS
Utilizzare Tailwind CSS all'interno di React: installazione
Aggiungere interattività lato server in Blazor 8
Creazione di componenti personalizzati in React.js con Tailwind CSS
Eseguire attività basate su eventi con Azure Container Jobs
Utilizzare Model as a Service su Microsoft Azure
Utilizzare politiche di resiliency con Azure Container App
Miglioramenti agli screen reader e al contrasto in Angular
Verificare la provenienza di un commit tramite le GitHub Actions
I più letti di oggi
- PWAConf 2020 - Online
- Reactive form tipizzati con FormBuilder in Angular
- Utilizzare ChatGPT con Azure OpenAI
- Mantenere sempre reattiva una Lambda di AWS
- Messaggi in tempo reale con Blazor Server
- Una chat con #aspnetcore e #websockets https://aspit.co/bmh di @GentiliMoreno #webapi #aspnetcore2
- Autenticarsi in modo sicuro su Azure tramite GitHub Actions
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Creare una MarkupExtension per accedere alle proprietà statiche in Silverlight 5.0
- Navigare la struttura visuale di un UIElement fino a recuperare l'elemento logico in Silverlight 3.0