MEF allows components to be decoupled by using imports and exports. It supports various discovery scenarios through types of catalogs.
The document demonstrates using MEF to load animal components into a zoo application. Classes that implement the IAnimal interface are exported. The zoo imports the animals using MEF.
Callbacks are added to allow the zoo to call a "GiveFood" method on the animals. MEF is used to hook this up by exporting the method and importing it via a contract.
Lazy loading is demonstrated to defer loading heavy components. A Lazy<T> import is used. Metadata is also supported by creating custom export attributes and importing metadata interfaces.