KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm using MEF to load plugins in my app. Everything works, but I want new parts to be discovered when they are dropped into my app folder. Is this possible? DirectoryCatalog has a Changed event but I'm not sure how it works. This is my code right now: public sealed class RevealerFactory { private static readonly Lazy<RevealerFactory> lazy = new Lazy<RevealerFactory>(() => new RevealerFactory()); public static RevealerFactory Instance { get { return lazy.Value; } } private FileSystemWatcher watcher; private RevealerFactory() { Initialize(); } [ImportMany(RequiredCreationPolicy = CreationPolicy.Shared)] private IEnumerable<Lazy<IRevealer, IRevealerCapabilities>> Revealers { get; set; } public IRevealer GetRevealer(Uri uri) { return (from revealer in Revealers where uri.Host.Equals(revealer.Metadata.Host, StringComparison.OrdinalIgnoreCase) && revealer.Value.IsRevelable(uri) select revealer.Value).FirstOrDefault(); } private void Initialize() { var catalog = new DirectoryCatalog( Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/SDownloader/Revealers"); var container = new CompositionContainer(catalog); container.ComposeParts(this); } }
Tags (comma-separated)
Save Edits
Cancel