I have an application that has many modules/plugins. I am using MEF with a Directory plugin to import them. Each user has a list of available modules stored in a database and each user can have multiple profiles controlling which modules are visible.
There is an overview area showing information from all visible modules with an [ImportMany(typeof(IModule)] attribute.
What is a good way of handling this so that invisible or inaccessible modules are not created in memory.