<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>MEFContrib Wiki &amp; Documentation Rss Feed</title><link>http://www.codeplex.com/MEFContrib/Wiki/View.aspx?title=Home</link><description>MEFContrib Wiki Rss Description</description><item><title>New Comment on "Introduction to the Managed Extensibility Framework"</title><link>https://mefcontrib.codeplex.com/wikipage?title=Introduction to the Managed Extensibility Framework&amp;ANCHOR#C27116</link><description>Nice introduction to MEF. &amp;#10;Having a good time using it at work. &amp;#58;&amp;#41;</description><author>praseodeveloper</author><pubDate>Sun, 07 Apr 2013 16:55:17 GMT</pubDate><guid isPermaLink="false">New Comment on "Introduction to the Managed Extensibility Framework" 20130407045517P</guid></item><item><title>New Comment on "Unity Integration"</title><link>http://mefcontrib.codeplex.com/wikipage?title=Unity Integration&amp;ANCHOR#C26967</link><description>Does it support Open generics&amp;#63;&amp;#10;Since as far as I tried, both using unity open-generic registration&amp;#58;&amp;#10;... RegisterType&amp;#40;typeof&amp;#40;IConfiguration&amp;#60;&amp;#62;&amp;#41;, typeof&amp;#40;FileBasedConfiguration&amp;#60;&amp;#62;&amp;#41;&amp;#41;&amp;#10;&amp;#10;and using MEFContrib open-generic solution &amp;#40;GenericCatalog &amp;#38; GenericContractRegistryBase&amp;#41;&amp;#10;it didn&amp;#39;t work. &amp;#40;inject to ImportingConstructor in this case&amp;#41;&amp;#10;&amp;#10;Without the MEF-unity integration, each open-generic solution works fine&amp;#10;&amp;#40;but without the benefits on Unity&amp;#43;MEF, of course&amp;#41;&amp;#10;&amp;#10;Thanks</description><author>barakbbn</author><pubDate>Sun, 24 Mar 2013 11:15:58 GMT</pubDate><guid isPermaLink="false">New Comment on "Unity Integration" 20130324111558A</guid></item><item><title>New Comment on "Documentation &amp; Features"</title><link>http://mefcontrib.codeplex.com/wikipage?title=Documentation &amp; Features&amp;ANCHOR#C24216</link><description>Is there any document for MEFContrib, that includes all features and how to use that&amp;#63; That may help us as a reference.</description><author>mahatab</author><pubDate>Wed, 27 Jun 2012 06:11:39 GMT</pubDate><guid isPermaLink="false">New Comment on "Documentation &amp; Features" 20120627061139A</guid></item><item><title>New Comment on "Generic Catalog"</title><link>http://mefcontrib.codeplex.com/wikipage?title=Generic Catalog&amp;ANCHOR#C17969</link><description>Error&amp;#9;1&amp;#9;&amp;#39;CommandHandlerTypeLocator&amp;#39;&amp;#58; cannot derive from sealed type &amp;#39;MefContrib.Hosting.Generics.GenericContractTypeMapping&amp;#39;&amp;#9;C&amp;#58;&amp;#92;.....&amp;#92;CommandHandlerTypeLocator.cs</description><author>aph5</author><pubDate>Mon, 13 Dec 2010 15:32:08 GMT</pubDate><guid isPermaLink="false">New Comment on "Generic Catalog" 20101213033208P</guid></item><item><title>Updated Wiki: Glossary of Terms</title><link>http://mefcontrib.codeplex.com/wikipage?title=Glossary of Terms&amp;version=2</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Glossary of MEF Terms&lt;/h1&gt;&lt;h2&gt;C&lt;/h2&gt;&lt;b&gt;Catalog&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Container&lt;/b&gt;
&lt;h2&gt;E&lt;/h2&gt;&lt;b&gt;Exports&lt;/b&gt;
&lt;h2&gt;I&lt;/h2&gt;&lt;b&gt;Imports&lt;/b&gt;
&lt;h2&gt;M&lt;/h2&gt;&lt;b&gt;Managed Extensibility Framework&lt;/b&gt; - framework shipped with .NET 4.0 that simplifies the creation of extensible applications. MEF offers discovery and composition capabilities that you can leverage to load application extensions. See also: &lt;a href="http://mefcontrib.codeplex.com/wikipage?title=Introduction%20to%20the%20Managed%20Extensibility%20Framework&amp;referringTitle=Glossary%20of%20Terms"&gt;Introduction to the Managed Extensibility Framework&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;MEF&lt;/b&gt; - acronym for &amp;quot;Managed Extensibility Framework&amp;quot; &lt;br /&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>jeremylikness</author><pubDate>Thu, 29 Jul 2010 15:09:46 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Glossary of Terms 20100729030946P</guid></item><item><title>Updated Wiki: Glossary of Terms</title><link>http://mefcontrib.codeplex.com/wikipage?title=Glossary of Terms&amp;version=1</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Glossary of MEF Terms&lt;/h1&gt;&lt;h2&gt;C&lt;/h2&gt;&lt;b&gt;Catalog&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Container&lt;/b&gt;
&lt;h2&gt;E&lt;/h2&gt;&lt;b&gt;Exports&lt;/b&gt;
&lt;h2&gt;I&lt;/h2&gt;&lt;b&gt;Imports&lt;/b&gt;
&lt;h2&gt;M&lt;/h2&gt;&lt;b&gt;Managed Extensibility Framework&lt;/b&gt; - framework shipped with .NET 4.0 that simplifies the creation of extensible applications. MEF offers discovery and composition capabilities that you can leverage to load application extensions. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;MEF&lt;/b&gt; - acronym for &amp;quot;Managed Extensibility Framework&amp;quot; &lt;br /&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>jeremylikness</author><pubDate>Thu, 29 Jul 2010 15:07:28 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Glossary of Terms 20100729030728P</guid></item><item><title>Updated Wiki: QuickStarts</title><link>http://mefcontrib.codeplex.com/wikipage?title=QuickStarts&amp;version=3</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Quick Starts&lt;/h1&gt;
Welcome to the MEF Quick Starts! Quick Starts are short articles and videos to help tackle common MEF scenarios. Each Quick Start is an independent entry that covers a specific item, and may include a short, easy-to-read article along with a short video demo.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://mefcontrib.codeplex.com/wikipage?title=Introduction%20to%20the%20Managed%20Extensibility%20Framework&amp;referringTitle=QuickStarts"&gt;Introduction to the Managed Extensibility Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hello, MEF
&lt;ul&gt;&lt;li&gt;Hello, MEF (Silverlight)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Understanding Parts (Exports, Imports, and Contracts)&lt;/li&gt;
&lt;li&gt;Lifetime Management&lt;/li&gt;
&lt;li&gt;ImportMany&lt;/li&gt;
&lt;li&gt;AllowDefault&lt;/li&gt;
&lt;li&gt;Working with Catalogs and Recomposition
&lt;ul&gt;&lt;li&gt;DeploymentCatalog (Silverlight)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Containers&lt;/li&gt;
&lt;li&gt;Composition 
&lt;ul&gt;&lt;li&gt;CompositionInitializer&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Metadata &lt;/li&gt;
&lt;li&gt;Lazy&amp;lt;T&amp;gt; and Lazy&amp;lt;T,TMetadata&amp;gt;&lt;/li&gt;
&lt;li&gt;ExportFactory&lt;/li&gt;
&lt;li&gt;Debugging and Diagnostics&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mefcontrib.codeplex.com/wikipage?title=Glossary%20of%20Terms&amp;referringTitle=QuickStarts"&gt;Glossary of Terms&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>jeremylikness</author><pubDate>Thu, 29 Jul 2010 15:03:13 GMT</pubDate><guid isPermaLink="false">Updated Wiki: QuickStarts 20100729030313P</guid></item><item><title>Updated Wiki: QuickStarts</title><link>http://mefcontrib.codeplex.com/wikipage?title=QuickStarts&amp;version=2</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Quick Starts&lt;/h1&gt;
Welcome to the MEF Quick Starts! Quick Starts are short articles and videos to help tackle common MEF scenarios. Each Quick Start is an independent entry that covers a specific item, and may include a short, easy-to-read article along with a short video demo.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://mefcontrib.codeplex.com/wikipage?title=Introduction%20to%20the%20Managed%20Extensibility%20Framework&amp;referringTitle=QuickStarts"&gt;Introduction to the Managed Extensibility Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hello, MEF
&lt;ul&gt;&lt;li&gt;Hello, MEF (Silverlight)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>jeremylikness</author><pubDate>Thu, 29 Jul 2010 14:55:27 GMT</pubDate><guid isPermaLink="false">Updated Wiki: QuickStarts 20100729025527P</guid></item><item><title>Updated Wiki: Introduction to the Managed Extensibility Framework</title><link>http://mefcontrib.codeplex.com/wikipage?title=Introduction to the Managed Extensibility Framework&amp;version=6</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Introduction to the Managed Extensibility Framework&lt;/h1&gt;&lt;h2&gt;Purpose&lt;/h2&gt;The purpose of this quick start is to familiarize you with the Managed Extensibility Framework. At the end of this quick start, you will be able to describe what the Managed Extensibility Framework (MEF) is, reasons you might use it, and the costs and risks associated with applying MEF to your projects. You will know how to add MEF to your own .NET project.
&lt;h2&gt;Duration: 5 Minutes&lt;/h2&gt;&lt;h2&gt;Topics Covered&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;The Managed Extensibility Framework (MEF)&lt;/li&gt;
&lt;li&gt;System.ComponentModel.Composition namespace&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;Article&lt;/h2&gt;The Managed Extensibility Framework (MEF) facilitates the creation of modular and extensible applications. It provides discovery and composition capabilities, a standard way to host and consume extensions, and meta-data to facilitate filtering and querying of application components.&lt;br /&gt;&lt;br /&gt;What do discovery and composition provide? One common problem that the developer must solve is how to provide global access to classes that deliver services such as configuration information, database access or even caching strategies to the application. Often, developers use a combination of singleton, locator, and/or factory patterns to resolve instances. MEF solves this problem by allowing the developer to tag the responsible class as an export. Anywhere in the application this class is required, the developer can provide an “import.” MEF will discover the class that is needed by examining the export tag then will compose it for the class that needs it via the import tag. This is just one example of problems MEF can help solve. While MEF addresses a variety of issues, the most common reasons for using MEF include:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Dependency injection / inversion of control&lt;/b&gt; – in applications that follow principles of loose coupling, code is written against contracts and interfaces, not concrete instances of classes. The challenge then becomes handling the implementation of the contract or interface. This is often done either via a “locator” class which uses a “bootstrapper” to bind concrete classes to interfaces. MEF solves this problem by allowing implementations to be tagged as exports. Consumer classes simply reference imports and MEF will glue the implementation/export to the contract/import.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Lifetime management of classes (i.e. “singleton” verses multiple instances)&lt;/b&gt; – the singleton pattern often requires modifying a class to hide the constructor and provide a mechanism for accessing the singleton. With MEF, the class can be written as any typical “instanced” class. There is no need to change how the class is written to accommodate how it will be accessed. MEF provides lifetime management services, which means when a class is declared as an export for the application, it can also specify whether or not a single copy or a new instance will be provided any time it is imported. This allows lifetime management to become an implementation detail rather than part of the class design itself.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Management of configuration data&lt;/b&gt; – MEF makes it easy to provide configuration data to an application. The configuration items may be defined as an interface that is imported by the classes that need them. The implementation of the contract can scan files, isolated storage, registries, configuration files, or whatever else is needed to provide the configuration information and then export those values to application. The classes requiring configuration information don’t need to be aware of how that configuration information is provided, as they simply import the interface and access the values.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;A reliable factory for components with dependency hierarchies&lt;/b&gt; – in some applications it is necessary to create multiple instances of certain classes. These classes may in turn have several dependencies to other classes. This can often require complicated factory classes that are responsible for finding various services and passing them into new classes via constructors or by setting properties. MEF will do this automatically. A factory class is provided that provides the means to generate a new instance when needed, and MEF will wire in all dependencies hierarchically down the chain.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Finding and executing multiple implementations of common interfaces / contracts&lt;/b&gt; – the classic case for extensions is to provide a common contract that plug-ins must implement so the host program can communicate with the plug-in without knowing the details of the underlying implementation. MEF allows you to import multiple implementations of the same contract to manage as many plug-ins or extensions as are needed.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Strongly-typed metadata to classify, query, and filter application components&lt;/b&gt; – as a complement to the ability to provide multiple implementations, you can also tag these implementations with metadata. Whether you are providing a service, a user control, or any other type of implementation, metadata can describe the capabilities of the implementation. The host can query metadata and use the implementations based on the context of the host application.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Lazy instantiation of components&lt;/b&gt; – whether you need to query metadata to decide if you are going to use an implementation or simply want to wait to create an instance of a class, MEF uses the new .NET Lazy class and only produces an instance when needed.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Stable composition of external plug-ins&lt;/b&gt; – MEF provides “stable composition” which means it will not compose an extension if dependencies are missing or construction of the instance fails. This allows more stability in the host application and insulation against plug-ins that are missing dependencies.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Application modularity&lt;/b&gt; – MEFs composition capabilities allow for highly modular applications. Parts that satisfy contracts, extensions, and plug-ins can reside in separate DLLs and XAP files and are easily re-used between and across applications.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Dynamic loading of components in the host application&lt;/b&gt; – one of the more powerful features of MEF is the ability to dynamically load assemblies. This allows extensions and plug-ins to be loaded at run-time on-demand.&lt;/li&gt;&lt;/ul&gt;
When making your decision to use MEF you should weigh the benefits of the services it provides with the risks it may introduce to your project. These risks include:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Size of the assembly (Silverlight only)&lt;/b&gt; – MEF adds several DLLs to the main XAP distribution for Silverlight applications&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Overhead of discovery and composition&lt;/b&gt; – MEF uses reflection to scan assemblies for types and exports and to generate instances. This can cause overhead when composing a dependency tree.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Added points of failure&lt;/b&gt; – because MEF requires the use of parts with imports and exports, and allows for metadata filtering of imports, developers must manage their classes appropriately to follow the correct attribution or naming convention based on the provider being used&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Increased requirements for troubleshooting and debugging&lt;/b&gt; – when MEF fails to compose/import an implementation, additional effort may be required to inspect the MEF hierarchy and determine why imports are failing&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Design-time vs. run-time considerations when using WPF and Silverlight in Blend and Visual Studio 2010&lt;/b&gt; – special consideration must be made for how the built-in designer (Cider) in Visual Studio 2010 and Blend to ensure your classes are “Blend-friendly” and can render appropriately in the designer.&lt;/li&gt;&lt;/ul&gt;
Including MEF in your .NET Framework 4.0 is simple and easy. You simply add a reference to System.ComponentModel.Composition from the .NET tab in the add references dialog. If you are using Silverlight, you might also reference System.ComponentModel.Composition.Initialization (this will be explained in a separate quick start). &lt;br /&gt;&lt;br /&gt;&lt;img src="http://gallery.jeremylikness.com/main.php?g2_view=core.DownloadItem&amp;amp;g2_itemId=328&amp;amp;g2_serialNumber=1" alt="Adding MEF References" title="Adding MEF References" /&gt;
&lt;h2&gt;Video&lt;/h2&gt;N/A
&lt;h2&gt;Conclusion&lt;/h2&gt;During this quick start, you learned:
&lt;ul&gt;&lt;li&gt;What is the Managed Extensibility Framework?&lt;/li&gt;
&lt;li&gt;When should I use the Managed Extensibility Framework?&lt;/li&gt;
&lt;li&gt;What are the risks and costs associated with using the Managed Extensibility Framework?&lt;/li&gt;
&lt;li&gt;How do I include the Managed Extensibility Framework in my own project?&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;Additional Resources&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;MEF for Line of Business Applications in .NET 4.0 (Presentation Slide Deck) &lt;a href="http://www.wintellect.com/CS/files/folders/sample_files/entry15083.aspx" class="externalLink"&gt;http://www.wintellect.com/CS/files/folders/sample_files/entry15083.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>jeremylikness</author><pubDate>Thu, 29 Jul 2010 13:56:54 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Introduction to the Managed Extensibility Framework 20100729015654P</guid></item><item><title>Updated Wiki: Introduction to the Managed Extensibility Framework</title><link>http://mefcontrib.codeplex.com/wikipage?title=Introduction to the Managed Extensibility Framework&amp;version=5</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Introduction to the Managed Extensibility Framework&lt;/h1&gt;&lt;h2&gt;Purpose&lt;/h2&gt;The purpose of this quick start is to familiarize you with the Managed Extensibility Framework. At the end of this quick start, you will be able to describe what the Managed Extensibility Framework (MEF) is, reasons you might use it, and the costs and risks associated with applying MEF to your projects. You will know how to add MEF to your own .NET project.
&lt;h2&gt;Duration: 5 Minutes&lt;/h2&gt;&lt;h2&gt;Topics Covered&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;The Managed Extensibility Framework (MEF)&lt;/li&gt;
&lt;li&gt;System.ComponentModel.Composition namespace&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;Article&lt;/h2&gt;The Managed Extensibility Framework (MEF) facilitates the creation of modular and extensible applications. It provides discovery and composition capabilities, a standard way to host and consume extensions, and meta-data to facilitate filtering and querying of application components.&lt;br /&gt;&lt;br /&gt;What do discovery and composition provide? One common problem that the developer must solve is how to provide global access to classes that deliver services such as configuration information, database access or even caching strategies to the application. Often, developers use a combination of singleton, locator, and/or factory patterns to resolve instances. MEF solves this problem by allowing the developer to tag the responsible class as an export. Anywhere in the application this class is required, the developer can provide an “import.” MEF will discover the class that is needed by examining the export tag then will compose it for the class that needs it via the import tag. This is just one example of problems MEF can help solve. While MEF addresses a variety of issues, the most common reasons for using MEF include:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Dependency injection / inversion of control&lt;/b&gt; – in applications that follow principles of loose coupling, code is written against contracts and interfaces, not concrete instances of classes. The challenge then becomes handling the implementation of the contract or interface. This is often done either via a “locator” class which uses a “bootstrapper” to bind concrete classes to interfaces. MEF solves this problem by allowing implementations to be tagged as exports. Consumer classes simply reference imports and MEF will glue the implementation/export to the contract/import.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Lifetime management of classes (i.e. “singleton” verses multiple instances)&lt;/b&gt; – the singleton pattern often requires modifying a class to hide the constructor and provide a mechanism for accessing the singleton. With MEF, the class can be written as any typical “instanced” class. There is no need to change how the class is written to accommodate how it will be accessed. MEF provides lifetime management services, which means when a class is declared as an export for the application, it can also specify whether or not a single copy or a new instance will be provided any time it is imported. This allows lifetime management to become an implementation detail rather than part of the class design itself.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Management of configuration data&lt;/b&gt; – MEF makes it easy to provide configuration data to an application. The configuration items may be defined as an interface that is imported by the classes that need them. The implementation of the contract can scan files, isolated storage, registries, configuration files, or whatever else is needed to provide the configuration information and then export those values to application. The classes requiring configuration information don’t need to be aware of how that configuration information is provided, as they simply import the interface and access the values.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;A reliable factory for components with dependency hierarchies&lt;/b&gt; – in some applications it is necessary to create multiple instances of certain classes. These classes may in turn have several dependencies to other classes. This can often require complicated factory classes that are responsible for finding various services and passing them into new classes via constructors or by setting properties. MEF will do this automatically. A factory class is provided that provides the means to generate a new instance when needed, and MEF will wire in all dependencies hierarchically down the chain.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Finding and executing multiple implementations of common interfaces / contracts&lt;/b&gt; – the classic case for extensions is to provide a common contract that plug-ins must implement so the host program can communicate with the plug-in without knowing the details of the underlying implementation. MEF allows you to import multiple implementations of the same contract to manage as many plug-ins or extensions as are needed.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Strongly-typed metadata to classify, query, and filter application components&lt;/b&gt; – as a complement to the ability to provide multiple implementations, you can also tag these implementations with metadata. Whether you are providing a service, a user control, or any other type of implementation, metadata can describe the capabilities of the implementation. The host can query metadata and use the implementations based on the context of the host application.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Lazy instantiation of components&lt;/b&gt; – whether you need to query metadata to decide if you are going to use an implementation or simply want to wait to create an instance of a class, MEF uses the new .NET Lazy class and only produces an instance when needed.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Stable composition of external plug-ins&lt;/b&gt; – MEF provides “stable composition” which means it will not compose an extension if dependencies are missing or construction of the instance fails. This allows more stability in the host application and insulation against plug-ins that are missing dependencies.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Application modularity&lt;/b&gt; – MEFs composition capabilities allow for highly modular applications. Parts that satisfy contracts, extensions, and plug-ins can reside in separate DLLs and XAP files and are easily re-used between and across applications.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Dynamic loading of components in the host application&lt;/b&gt; – one of the more powerful features of MEF is the ability to dynamically load assemblies. This allows extensions and plug-ins to be loaded at run-time on-demand.&lt;/li&gt;&lt;/ul&gt;
When making your decision to use MEF you should weigh the benefits of the services it provides with the risks it may introduce to your project. These risks include:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Size of the assembly (Silverlight only)&lt;/b&gt; – MEF adds several DLLs to the main XAP distribution for Silverlight applications&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Overhead of discovery and composition&lt;/b&gt; – MEF uses reflection to scan assemblies for types and exports and to generate instances. This can cause overhead when composing a dependency tree.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Added points of failure&lt;/b&gt; – because MEF requires the use of parts with imports and exports, and allows for metadata filtering of imports, developers must manage their classes appropriately to follow the correct attribution or naming convention based on the provider being used&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Increased requirements for troubleshooting and debugging&lt;/b&gt; – when MEF fails to compose/import an implementation, additional effort may be required to inspect the MEF hierarchy and determine why imports are failing&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Design-time vs. run-time considerations when using WPF and Silverlight in Blend and Visual Studio 2010&lt;/b&gt; – special consideration must be made for how the built-in designer (Cider) in Visual Studio 2010 and Blend to ensure your classes are “Blend-friendly” and can render appropriately in the designer.&lt;/li&gt;&lt;/ul&gt;
Including MEF in your .NET Framework 4.0 is simple and easy. You simply add a reference to System.ComponentModel.Composition from the .NET tab in the add references dialog. If you are using Silverlight, you might also reference System.ComponentModel.Composition.Initialization (this will be explained in a separate quick start). &lt;br /&gt;&lt;br /&gt;&lt;img src="http://gallery.jeremylikness.com/main.php?g2_view=core.DownloadItem&amp;amp;g2_itemId=328&amp;amp;g2_serialNumber=1" alt="Adding MEF References" title="Adding MEF References" /&gt;
&lt;h2&gt;Video&lt;/h2&gt;N/A
&lt;h2&gt;Conclusion&lt;/h2&gt;During this quick start, you learned:
&lt;ul&gt;&lt;li&gt;What is the Managed Extensibility Framework?&lt;/li&gt;
&lt;li&gt;When should I use the Managed Extensibility Framework?&lt;/li&gt;
&lt;li&gt;What are the risks and costs associated with using the Managed Extensibility Framework?&lt;/li&gt;
&lt;li&gt;How do I include the Managed Extensibility Framework in my own project?&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;Additional Resources&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;MEF for Line of Business Applications in .NET 4.0 (Presentation Slide Deck) &lt;a href="http://mefcontrib.codeplex.com/wikipage?title=http%3a%2f%2fwww.wintellect.com%2fCS%2ffiles%2ffolders%2fsample_files%2fentry15083.aspx&amp;referringTitle=Introduction%20to%20the%20Managed%20Extensibility%20Framework"&gt;http&amp;#58;&amp;#47;&amp;#47;www.wintellect.com&amp;#47;CS&amp;#47;files&amp;#47;folders&amp;#47;sample_files&amp;#47;entry15083.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>jeremylikness</author><pubDate>Thu, 29 Jul 2010 13:56:13 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Introduction to the Managed Extensibility Framework 20100729015613P</guid></item><item><title>Updated Wiki: Introduction to the Managed Extensibility Framework</title><link>http://mefcontrib.codeplex.com/wikipage?title=Introduction to the Managed Extensibility Framework&amp;version=4</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Introduction to the Managed Extensibility Framework&lt;/h1&gt;&lt;h2&gt;Purpose&lt;/h2&gt;The purpose of this quick start is to familiarize you with the Managed Extensibility Framework. At the end of this quick start, you will be able to describe what the Managed Extensibility Framework (MEF) is, reasons you might use it, and the costs and risks associated with applying MEF to your projects. You will know how to add MEF to your own .NET project.
&lt;h2&gt;Duration: 2 Minutes&lt;/h2&gt;&lt;h2&gt;Topics Covered&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;The Managed Extensibility Framework (MEF)&lt;/li&gt;
&lt;li&gt;System.ComponentModel.Composition namespace&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;Article&lt;/h2&gt;The Managed Extensibility Framework (MEF) facilitates the creation of modular and extensible applications. It provides discovery and composition capabilities, a standard way to host and consume extensions, and meta-data to facilitate filtering and querying of application components.&lt;br /&gt;&lt;br /&gt;What do discovery and composition provide? One common problem that the developer must solve is how to provide global access to classes that deliver services such as configuration information, database access or even caching strategies to the application. Often, developers use a combination of singleton, locator, and/or factory patterns to resolve instances. MEF solves this problem by allowing the developer to tag the responsible class as an export. Anywhere in the application this class is required, the developer can provide an “import.” MEF will discover the class that is needed by examining the export tag then will compose it for the class that needs it via the import tag. This is just one example of problems MEF can help solve. While MEF addresses a variety of issues, the most common reasons for using MEF include:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Dependency injection / inversion of control&lt;/b&gt; – in applications that follow principles of loose coupling, code is written against contracts and interfaces, not concrete instances of classes. The challenge then becomes handling the implementation of the contract or interface. This is often done either via a “locator” class which uses a “bootstrapper” to bind concrete classes to interfaces. MEF solves this problem by allowing implementations to be tagged as exports. Consumer classes simply reference imports and MEF will glue the implementation/export to the contract/import.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Lifetime management of classes (i.e. “singleton” verses multiple instances)&lt;/b&gt; – the singleton pattern often requires modifying a class to hide the constructor and provide a mechanism for accessing the singleton. With MEF, the class can be written as any typical “instanced” class. There is no need to change how the class is written to accommodate how it will be accessed. MEF provides lifetime management services, which means when a class is declared as an export for the application, it can also specify whether or not a single copy or a new instance will be provided any time it is imported. This allows lifetime management to become an implementation detail rather than part of the class design itself.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Management of configuration data&lt;/b&gt; – MEF makes it easy to provide configuration data to an application. The configuration items may be defined as an interface that is imported by the classes that need them. The implementation of the contract can scan files, isolated storage, registries, configuration files, or whatever else is needed to provide the configuration information and then export those values to application. The classes requiring configuration information don’t need to be aware of how that configuration information is provided, as they simply import the interface and access the values.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;A reliable factory for components with dependency hierarchies&lt;/b&gt; – in some applications it is necessary to create multiple instances of certain classes. These classes may in turn have several dependencies to other classes. This can often require complicated factory classes that are responsible for finding various services and passing them into new classes via constructors or by setting properties. MEF will do this automatically. A factory class is provided that provides the means to generate a new instance when needed, and MEF will wire in all dependencies hierarchically down the chain.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Finding and executing multiple implementations of common interfaces / contracts&lt;/b&gt; – the classic case for extensions is to provide a common contract that plug-ins must implement so the host program can communicate with the plug-in without knowing the details of the underlying implementation. MEF allows you to import multiple implementations of the same contract to manage as many plug-ins or extensions as are needed.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Strongly-typed metadata to classify, query, and filter application components&lt;/b&gt; – as a complement to the ability to provide multiple implementations, you can also tag these implementations with metadata. Whether you are providing a service, a user control, or any other type of implementation, metadata can describe the capabilities of the implementation. The host can query metadata and use the implementations based on the context of the host application.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Lazy instantiation of components&lt;/b&gt; – whether you need to query metadata to decide if you are going to use an implementation or simply want to wait to create an instance of a class, MEF uses the new .NET Lazy class and only produces an instance when needed.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Stable composition of external plug-ins&lt;/b&gt; – MEF provides “stable composition” which means it will not compose an extension if dependencies are missing or construction of the instance fails. This allows more stability in the host application and insulation against plug-ins that are missing dependencies.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Application modularity&lt;/b&gt; – MEFs composition capabilities allow for highly modular applications. Parts that satisfy contracts, extensions, and plug-ins can reside in separate DLLs and XAP files and are easily re-used between and across applications.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Dynamic loading of components in the host application&lt;/b&gt; – one of the more powerful features of MEF is the ability to dynamically load assemblies. This allows extensions and plug-ins to be loaded at run-time on-demand.&lt;/li&gt;&lt;/ul&gt;
When making your decision to use MEF you should weigh the benefits of the services it provides with the risks it may introduce to your project. These risks include:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Size of the assembly (Silverlight only)&lt;/b&gt; – MEF adds several DLLs to the main XAP distribution for Silverlight applications&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Overhead of discovery and composition&lt;/b&gt; – MEF uses reflection to scan assemblies for types and exports and to generate instances. This can cause overhead when composing a dependency tree.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Added points of failure&lt;/b&gt; – because MEF requires the use of parts with imports and exports, and allows for metadata filtering of imports, developers must manage their classes appropriately to follow the correct attribution or naming convention based on the provider being used&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Increased requirements for troubleshooting and debugging&lt;/b&gt; – when MEF fails to compose/import an implementation, additional effort may be required to inspect the MEF hierarchy and determine why imports are failing&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Design-time vs. run-time considerations when using WPF and Silverlight in Blend and Visual Studio 2010&lt;/b&gt; – special consideration must be made for how the built-in designer (Cider) in Visual Studio 2010 and Blend to ensure your classes are “Blend-friendly” and can render appropriately in the designer.&lt;/li&gt;&lt;/ul&gt;
Including MEF in your .NET Framework 4.0 is simple and easy. You simply add a reference to System.ComponentModel.Composition from the .NET tab in the add references dialog. If you are using Silverlight, you might also reference System.ComponentModel.Composition.Initialization (this will be explained in a separate quick start). &lt;br /&gt;&lt;br /&gt;&lt;img src="http://gallery.jeremylikness.com/main.php?g2_view=core.DownloadItem&amp;amp;g2_itemId=328&amp;amp;g2_serialNumber=1" alt="Adding MEF References" title="Adding MEF References" /&gt;
&lt;h2&gt;Video&lt;/h2&gt;N/A
&lt;h2&gt;Conclusion&lt;/h2&gt;During this quick start, you learned:
&lt;ul&gt;&lt;li&gt;What is the Managed Extensibility Framework?&lt;/li&gt;
&lt;li&gt;When should I use the Managed Extensibility Framework?&lt;/li&gt;
&lt;li&gt;What are the risks and costs associated with using the Managed Extensibility Framework?&lt;/li&gt;
&lt;li&gt;How do I include the Managed Extensibility Framework in my own project?&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;Additional Resources&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;MEF for Line of Business Applications in .NET 4.0 (Presentation Slide Deck) &lt;a href="http://mefcontrib.codeplex.com/wikipage?title=http%3a%2f%2fwww.wintellect.com%2fCS%2ffiles%2ffolders%2fsample_files%2fentry15083.aspx&amp;referringTitle=Introduction%20to%20the%20Managed%20Extensibility%20Framework"&gt;http&amp;#58;&amp;#47;&amp;#47;www.wintellect.com&amp;#47;CS&amp;#47;files&amp;#47;folders&amp;#47;sample_files&amp;#47;entry15083.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>jeremylikness</author><pubDate>Thu, 29 Jul 2010 13:55:46 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Introduction to the Managed Extensibility Framework 20100729015546P</guid></item><item><title>Updated Wiki: Introduction to the Managed Extensibility Framework</title><link>http://mefcontrib.codeplex.com/wikipage?title=Introduction to the Managed Extensibility Framework&amp;version=3</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Introduction to the Managed Extensibility Framework&lt;/h1&gt;&lt;h2&gt;Purpose&lt;/h2&gt;The purpose of this quick start is to familiarize you with the Managed Extensibility Framework. At the end of this quick start, you will be able to describe what the Managed Extensibility Framework (MEF) is, reasons you might use it, and the costs and risks associated with applying MEF to your projects. You will know how to add MEF to your own .NET project.
&lt;h2&gt;Duration: 2 Minutes&lt;/h2&gt;&lt;h2&gt;Topics Covered&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;The Managed Extensibility Framework (MEF)&lt;/li&gt;
&lt;li&gt;System.ComponentModel.Composition namespace&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;Article&lt;/h2&gt;The Managed Extensibility Framework (MEF) facilitates the creation of modular and extensible applications. It provides discovery and composition capabilities, a standard way to host and consume extensions, and meta-data to facilitate filtering and querying of application components.&lt;br /&gt;&lt;br /&gt;What do discovery and composition provide? One common problem that the developer must solve is how to provide global access to classes that deliver services such as configuration information, database access or even caching strategies to the application. Often, developers use a combination of singleton, locator, and/or factory patterns to resolve instances. MEF solves this problem by allowing the developer to tag the responsible class as an export. Anywhere in the application this class is required, the developer can provide an “import.” MEF will discover the class that is needed by examining the export tag then will compose it for the class that needs it via the import tag. This is just one example of problems MEF can help solve. While MEF addresses a variety of issues, the most common reasons for using MEF include:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Dependency injection / inversion of control&lt;/b&gt; – in applications that follow principles of loose coupling, code is written against contracts and interfaces, not concrete instances of classes. The challenge then becomes handling the implementation of the contract or interface. This is often done either via a “locator” class which uses a “bootstrapper” to bind concrete classes to interfaces. MEF solves this problem by allowing implementations to be tagged as exports. Consumer classes simply reference imports and MEF will glue the implementation/export to the contract/import.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Lifetime management of classes (i.e. “singleton” verses multiple instances)&lt;/b&gt; – the singleton pattern often requires modifying a class to hide the constructor and provide a mechanism for accessing the singleton. With MEF, the class can be written as any typical “instanced” class. There is no need to change how the class is written to accommodate how it will be accessed. MEF provides lifetime management services, which means when a class is declared as an export for the application, it can also specify whether or not a single copy or a new instance will be provided any time it is imported. This allows lifetime management to become an implementation detail rather than part of the class design itself.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Management of configuration data&lt;/b&gt; – MEF makes it easy to provide configuration data to an application. The configuration items may be defined as an interface that is imported by the classes that need them. The implementation of the contract can scan files, isolated storage, registries, configuration files, or whatever else is needed to provide the configuration information and then export those values to application. The classes requiring configuration information don’t need to be aware of how that configuration information is provided, as they simply import the interface and access the values.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;A reliable factory for components with dependency hierarchies&lt;/b&gt; – in some applications it is necessary to create multiple instances of certain classes. These classes may in turn have several dependencies to other classes. This can often require complicated factory classes that are responsible for finding various services and passing them into new classes via constructors or by setting properties. MEF will do this automatically. A factory class is provided that provides the means to generate a new instance when needed, and MEF will wire in all dependencies hierarchically down the chain.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Finding and executing multiple implementations of common interfaces / contracts&lt;/b&gt; – the classic case for extensions is to provide a common contract that plug-ins must implement so the host program can communicate with the plug-in without knowing the details of the underlying implementation. MEF allows you to import multiple implementations of the same contract to manage as many plug-ins or extensions as are needed.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Strongly-typed metadata to classify, query, and filter application components&lt;/b&gt; – as a complement to the ability to provide multiple implementations, you can also tag these implementations with metadata. Whether you are providing a service, a user control, or any other type of implementation, metadata can describe the capabilities of the implementation. The host can query metadata and use the implementations based on the context of the host application.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Lazy instantiation of components&lt;/b&gt; – whether you need to query metadata to decide if you are going to use an implementation or simply want to wait to create an instance of a class, MEF uses the new .NET Lazy class and only produces an instance when needed.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Stable composition of external plug-ins&lt;/b&gt; – MEF provides “stable composition” which means it will not compose an extension if dependencies are missing or construction of the instance fails. This allows more stability in the host application and insulation against plug-ins that are missing dependencies.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Application modularity&lt;/b&gt; – MEFs composition capabilities allow for highly modular applications. Parts that satisfy contracts, extensions, and plug-ins can reside in separate DLLs and XAP files and are easily re-used between and across applications.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Dynamic loading of components in the host application&lt;/b&gt; – one of the more powerful features of MEF is the ability to dynamically load assemblies. This allows extensions and plug-ins to be loaded at run-time on-demand.&lt;/li&gt;&lt;/ul&gt;
When making your decision to use MEF you should weigh the benefits of the services it provides with the risks it may introduce to your project. These risks include:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Size of the assembly (Silverlight only)&lt;/b&gt; – MEF adds several DLLs to the main XAP distribution for Silverlight applications&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Overhead of discovery and composition&lt;/b&gt; – MEF uses reflection to scan assemblies for types and exports and to generate instances. This can cause overhead when composing a dependency tree.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Added points of failure&lt;/b&gt; – because MEF requires the use of parts with imports and exports, and allows for metadata filtering of imports, developers must manage their classes appropriately to follow the correct attribution or naming convention based on the provider being used&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Increased requirements for troubleshooting and debugging&lt;/b&gt; – when MEF fails to compose/import an implementation, additional effort may be required to inspect the MEF hierarchy and determine why imports are failing&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Design-time vs. run-time considerations when using WPF and Silverlight in Blend and Visual Studio 2010&lt;/b&gt; – special consideration must be made for how the built-in designer (Cider) in Visual Studio 2010 and Blend to ensure your classes are “Blend-friendly” and can render appropriately in the designer.&lt;/li&gt;&lt;/ul&gt;
Including MEF in your .NET Framework 4.0 is simple and easy. You simply add a reference to System.ComponentModel.Composition from the .NET tab in the add references dialog. If you are using Silverlight, you might also reference System.ComponentModel.Composition.Initialization (this will be explained in a separate quick start). &lt;br /&gt;&lt;img src="http://gallery.jeremylikness.com/main.php?g2_view=core.DownloadItem&amp;amp;g2_itemId=328&amp;amp;g2_serialNumber=1" alt="Adding MEF References" title="Adding MEF References" /&gt;
&lt;h2&gt;Video&lt;/h2&gt;N/A
&lt;h2&gt;Conclusion&lt;/h2&gt;During this quick start, you learned:
&lt;ul&gt;&lt;li&gt;What is the Managed Extensibility Framework?&lt;/li&gt;
&lt;li&gt;When should I use the Managed Extensibility Framework?&lt;/li&gt;
&lt;li&gt;What are the risks and costs associated with using the Managed Extensibility Framework?&lt;/li&gt;
&lt;li&gt;How do I include the Managed Extensibility Framework in my own project?&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;Additional Resources&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;MEF for Line of Business Applications in .NET 4.0 (Presentation Slide Deck) &lt;a href="http://mefcontrib.codeplex.com/wikipage?title=http%3a%2f%2fwww.wintellect.com%2fCS%2ffiles%2ffolders%2fsample_files%2fentry15083.aspx&amp;referringTitle=Introduction%20to%20the%20Managed%20Extensibility%20Framework"&gt;http&amp;#58;&amp;#47;&amp;#47;www.wintellect.com&amp;#47;CS&amp;#47;files&amp;#47;folders&amp;#47;sample_files&amp;#47;entry15083.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>jeremylikness</author><pubDate>Thu, 29 Jul 2010 13:55:25 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Introduction to the Managed Extensibility Framework 20100729015525P</guid></item><item><title>Updated Wiki: Introduction to the Managed Extensibility Framework</title><link>http://mefcontrib.codeplex.com/wikipage?title=Introduction to the Managed Extensibility Framework&amp;version=2</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Introduction to the Managed Extensibility Framework&lt;/h1&gt;
&lt;h2&gt;Purpose&lt;/h2&gt;
The purpose of this quick start is to familiarize you with the Managed Extensibility Framework. At the end of this quick start, you will be able to describe what the Managed Extensibility Framework (MEF) is, reasons you might use it, and the costs and risks associated with applying MEF to your projects. You will know how to add MEF to your own .NET project.&lt;br /&gt;
&lt;h2&gt;Duration: 2 Minutes&lt;/h2&gt;
&lt;h2&gt;Topics Covered&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;The Managed Extensibility Framework (MEF)&lt;/li&gt;
&lt;li&gt;System.ComponentModel.Composition namespace&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Article&lt;/h2&gt;
The Managed Extensibility Framework (MEF) facilitates the creation of modular and extensible applications. It provides discovery and composition capabilities, a standard way to host and consume extensions, and meta-data to facilitate filtering and querying of application components.&lt;br /&gt;&lt;br /&gt;What do discovery and composition provide? One common problem that the developer must solve is how to provide global access to classes that deliver services such as configuration information, database access or even caching strategies to the application. Often, developers use a combination of singleton, locator, and/or factory patterns to resolve instances. MEF solves this problem by allowing the developer to tag the responsible class as an export. Anywhere in the application this class is required, the developer can provide an “import.” MEF will discover the class that is needed by examining the export tag then will compose it for the class that needs it via the import tag. This is just one example of problems MEF can help solve. While MEF addresses a variety of issues, the most common reasons for using MEF include:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Dependency injection / inversion of control&lt;/b&gt; – in applications that follow principles of loose coupling, code is written against contracts and interfaces, not concrete instances of classes. The challenge then becomes handling the implementation of the contract or interface. This is often done either via a “locator” class which uses a “bootstrapper” to bind concrete classes to interfaces. MEF solves this problem by allowing implementations to be tagged as exports. Consumer classes simply reference imports and MEF will glue the implementation/export to the contract/import.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Lifetime management of classes (i.e. “singleton” verses multiple instances)&lt;/b&gt; – the singleton pattern often requires modifying a class to hide the constructor and provide a mechanism for accessing the singleton. With MEF, the class can be written as any typical “instanced” class. There is no need to change how the class is written to accommodate how it will be accessed. MEF provides lifetime management services, which means when a class is declared as an export for the application, it can also specify whether or not a single copy or a new instance will be provided any time it is imported. This allows lifetime management to become an implementation detail rather than part of the class design itself.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Management of configuration data&lt;/b&gt; – MEF makes it easy to provide configuration data to an application. The configuration items may be defined as an interface that is imported by the classes that need them. The implementation of the contract can scan files, isolated storage, registries, configuration files, or whatever else is needed to provide the configuration information and then export those values to application. The classes requiring configuration information don’t need to be aware of how that configuration information is provided, as they simply import the interface and access the values.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;A reliable factory for components with dependency hierarchies&lt;/b&gt; – in some applications it is necessary to create multiple instances of certain classes. These classes may in turn have several dependencies to other classes. This can often require complicated factory classes that are responsible for finding various services and passing them into new classes via constructors or by setting properties. MEF will do this automatically. A factory class is provided that provides the means to generate a new instance when needed, and MEF will wire in all dependencies hierarchically down the chain.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Finding and executing multiple implementations of common interfaces / contracts&lt;/b&gt; – the classic case for extensions is to provide a common contract that plug-ins must implement so the host program can communicate with the plug-in without knowing the details of the underlying implementation. MEF allows you to import multiple implementations of the same contract to manage as many plug-ins or extensions as are needed.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Strongly-typed metadata to classify, query, and filter application components&lt;/b&gt; – as a complement to the ability to provide multiple implementations, you can also tag these implementations with metadata. Whether you are providing a service, a user control, or any other type of implementation, metadata can describe the capabilities of the implementation. The host can query metadata and use the implementations based on the context of the host application.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Lazy instantiation of components&lt;/b&gt; – whether you need to query metadata to decide if you are going to use an implementation or simply want to wait to create an instance of a class, MEF uses the new .NET Lazy class and only produces an instance when needed.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Stable composition of external plug-ins&lt;/b&gt; – MEF provides “stable composition” which means it will not compose an extension if dependencies are missing or construction of the instance fails. This allows more stability in the host application and insulation against plug-ins that are missing dependencies.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Application modularity&lt;/b&gt; – MEFs composition capabilities allow for highly modular applications. Parts that satisfy contracts, extensions, and plug-ins can reside in separate DLLs and XAP files and are easily re-used between and across applications.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Dynamic loading of components in the host application&lt;/b&gt; – one of the more powerful features of MEF is the ability to dynamically load assemblies. This allows extensions and plug-ins to be loaded at run-time on-demand.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;When making your decision to use MEF you should weigh the benefits of the services it provides with the risks it may introduce to your project. These risks include:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Size of the assembly (Silverlight only)&lt;/b&gt; – MEF adds several DLLs to the main XAP distribution for Silverlight applications&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Overhead of discovery and composition&lt;/b&gt; – MEF uses reflection to scan assemblies for types and exports and to generate instances. This can cause overhead when composing a dependency tree.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Added points of failure&lt;/b&gt; – because MEF requires the use of parts with imports and exports, and allows for metadata filtering of imports, developers must manage their classes appropriately to follow the correct attribution or naming convention based on the provider being used&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Increased requirements for troubleshooting and debugging&lt;/b&gt; – when MEF fails to compose/import an implementation, additional effort may be required to inspect the MEF hierarchy and determine why imports are failing&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Design-time vs. run-time considerations when using WPF and Silverlight in Blend and Visual Studio 2010&lt;/b&gt; – special consideration must be made for how the built-in designer (Cider) in Visual Studio 2010 and Blend to ensure your classes are “Blend-friendly” and can render appropriately in the designer.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Including MEF in your .NET Framework 4.0 is simple and easy. You simply add a reference to System.ComponentModel.Composition from the .NET tab in the add references dialog. If you are using Silverlight, you might also reference System.ComponentModel.Composition.Initialization (this will be explained in a separate quick start). &lt;br /&gt; 
&lt;h2&gt;Video&lt;/h2&gt;N/A&lt;br /&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
During this quick start, you learned:
&lt;ul&gt;&lt;li&gt;What is the Managed Extensibility Framework?&lt;/li&gt;
&lt;li&gt;When should I use the Managed Extensibility Framework?&lt;/li&gt;
&lt;li&gt;What are the risks and costs associated with using the Managed Extensibility Framework?&lt;/li&gt;
&lt;li&gt;How do I include the Managed Extensibility Framework in my own project?&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Additional Resources&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;MEF for Line of Business Applications in .NET 4.0 (Presentation Slide Deck) &lt;a href="http://mefcontrib.codeplex.com/wikipage?title=http%3a%2f%2fwww.wintellect.com%2fCS%2ffiles%2ffolders%2fsample_files%2fentry15083.aspx&amp;referringTitle=Introduction%20to%20the%20Managed%20Extensibility%20Framework"&gt;http&amp;#58;&amp;#47;&amp;#47;www.wintellect.com&amp;#47;CS&amp;#47;files&amp;#47;folders&amp;#47;sample_files&amp;#47;entry15083.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>jeremylikness</author><pubDate>Thu, 29 Jul 2010 13:51:45 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Introduction to the Managed Extensibility Framework 20100729015145P</guid></item><item><title>Updated Wiki: Introduction to the Managed Extensibility Framework</title><link>http://mefcontrib.codeplex.com/wikipage?title=Introduction to the Managed Extensibility Framework&amp;version=1</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Introduction to the Managed Extensibility Framework&lt;/h1&gt;
&lt;h2&gt;Purpose&lt;/h2&gt;
The purpose of this quick start is to familiarize you with the Managed Extensibility Framework. At the end of this quick start, you will be able to describe what the Managed Extensibility Framework (MEF) is, reasons you might use it, and the costs and risks associated with applying MEF to your projects. You will know how to add MEF to your own .NET project.&lt;br /&gt;
&lt;h2&gt;Duration: 2 Minutes&lt;/h2&gt;
&lt;h2&gt;Topics Covered&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;The Managed Extensibility Framework (MEF)&lt;/li&gt;
&lt;li&gt;System.ComponentModel.Composition namespace&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Article&lt;/h2&gt;
The Managed Extensibility Framework (MEF) facilitates the creation of modular and extensible applications. It provides discovery and composition capabilities, a standard way to host and consume extensions, and meta-data to facilitate filtering and querying of application components.&lt;br /&gt;&lt;br /&gt;What do discovery and composition provide? One common problem that the developer must solve is how to provide global access to classes that deliver services such as configuration information, database access or even caching strategies to the application. Often, developers use a combination of singleton, locator, and/or factory patterns to resolve instances. MEF solves this problem by allowing the developer to tag the responsible class as an export. Anywhere in the application this class is required, the developer can provide an “import.” MEF will discover the class that is needed by examining the export tag then will compose it for the class that needs it via the import tag. This is just one example of problems MEF can help solve. While MEF addresses a variety of issues, the most common reasons for using MEF include:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Dependency injection / inversion of control&lt;/b&gt; – in applications that follow principles of loose coupling, code is written against contracts and interfaces, not concrete instances of classes. The challenge then becomes handling the implementation of the contract or interface. This is often done either via a “locator” class which uses a “bootstrapper” to bind concrete classes to interfaces. MEF solves this problem by allowing implementations to be tagged as exports. Consumer classes simply reference imports and MEF will glue the implementation/export to the contract/import.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Lifetime management of classes (i.e. “singleton” verses multiple instances)&lt;/b&gt; – the singleton pattern often requires modifying a class to hide the constructor and provide a mechanism for accessing the singleton. With MEF, the class can be written as any typical “instanced” class. There is no need to change how the class is written to accommodate how it will be accessed. MEF provides lifetime management services, which means when a class is declared as an export for the application, it can also specify whether or not a single copy or a new instance will be provided any time it is imported. This allows lifetime management to become an implementation detail rather than part of the class design itself.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Management of configuration data&lt;/b&gt; – MEF makes it easy to provide configuration data to an application. The configuration items may be defined as an interface that is imported by the classes that need them. The implementation of the contract can scan files, isolated storage, registries, configuration files, or whatever else is needed to provide the configuration information and then export those values to application. The classes requiring configuration information don’t need to be aware of how that configuration information is provided, as they simply import the interface and access the values.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;A reliable factory for components with dependency hierarchies&lt;/b&gt; – in some applications it is necessary to create multiple instances of certain classes. These classes may in turn have several dependencies to other classes. This can often require complicated factory classes that are responsible for finding various services and passing them into new classes via constructors or by setting properties. MEF will do this automatically. A factory class is provided that provides the means to generate a new instance when needed, and MEF will wire in all dependencies hierarchically down the chain.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Finding and executing multiple implementations of common interfaces / contracts&lt;/b&gt; – the classic case for extensions is to provide a common contract that plug-ins must implement so the host program can communicate with the plug-in without knowing the details of the underlying implementation. MEF allows you to import multiple implementations of the same contract to manage as many plug-ins or extensions as are needed.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Strongly-typed metadata to classify, query, and filter application components&lt;/b&gt; – as a complement to the ability to provide multiple implementations, you can also tag these implementations with metadata. Whether you are providing a service, a user control, or any other type of implementation, metadata can describe the capabilities of the implementation. The host can query metadata and use the implementations based on the context of the host application.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Lazy instantiation of components&lt;/b&gt; – whether you need to query metadata to decide if you are going to use an implementation or simply want to wait to create an instance of a class, MEF uses the new .NET Lazy class and only produces an instance when needed.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Stable composition of external plug-ins&lt;/b&gt; – MEF provides “stable composition” which means it will not compose an extension if dependencies are missing or construction of the instance fails. This allows more stability in the host application and insulation against plug-ins that are missing dependencies.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Application modularity&lt;/b&gt; – MEFs composition capabilities allow for highly modular applications. Parts that satisfy contracts, extensions, and plug-ins can reside in separate DLLs and XAP files and are easily re-used between and across applications.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Dynamic loading of components in the host application&lt;/b&gt; – one of the more powerful features of MEF is the ability to dynamically load assemblies. This allows extensions and plug-ins to be loaded at run-time on-demand.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;When making your decision to use MEF you should weigh the benefits of the services it provides with the risks it may introduce to your project. These risks include:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Size of the assembly (Silverlight only)&lt;/b&gt; – MEF adds several DLLs to the main XAP distribution for Silverlight applications&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Overhead of discovery and composition&lt;/b&gt; – MEF uses reflection to scan assemblies for types and exports and to generate instances. This can cause overhead when composing a dependency tree.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Added points of failure&lt;/b&gt; – because MEF requires the use of parts with imports and exports, and allows for metadata filtering of imports, developers must manage their classes appropriately to follow the correct attribution or naming convention based on the provider being used&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Increased requirements for troubleshooting and debugging&lt;/b&gt; – when MEF fails to compose/import an implementation, additional effort may be required to inspect the MEF hierarchy and determine why imports are failing&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Design-time vs. run-time considerations when using WPF and Silverlight in Blend and Visual Studio 2010&lt;/b&gt; – special consideration must be made for how the built-in designer (Cider) in Visual Studio 2010 and Blend to ensure your classes are “Blend-friendly” and can render appropriately in the designer.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Including MEF in your .NET Framework 4.0 is simple and easy. You simply add a reference to System.ComponentModel.Composition from the .NET tab in the add references dialog. If you are using Silverlight, you might also reference System.ComponentModel.Composition.Initialization (this will be explained in a separate quick start). &lt;br /&gt; 
&lt;h2&gt;Video&lt;/h2&gt;N/A&lt;br /&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
During this quick start, you learned:
&lt;ul&gt;&lt;li&gt;What is the Managed Extensibility Framework?&lt;/li&gt;
&lt;li&gt;When should I use the Managed Extensibility Framework?&lt;/li&gt;
&lt;li&gt;What are the risks and costs associated with using the Managed Extensibility Framework?&lt;/li&gt;
&lt;li&gt;How do I include the Managed Extensibility Framework in my own project?&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Additional Resources&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;MEF for Line of Business Applications in .NET 4.0 (Presentation Slide Deck) &lt;a href="http://mefcontrib.codeplex.com/wikipage?title=http%3a%2f%2fwww.wintellect.com%2fCS%2ffiles%2ffolders%2fsample_files%2fentry15083.aspx&amp;referringTitle=Introduction%20to%20the%20Managed%20Extensibility%20Framework"&gt;http&amp;#58;&amp;#47;&amp;#47;www.wintellect.com&amp;#47;CS&amp;#47;files&amp;#47;folders&amp;#47;sample_files&amp;#47;entry15083.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>jeremylikness</author><pubDate>Thu, 29 Jul 2010 13:49:15 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Introduction to the Managed Extensibility Framework 20100729014915P</guid></item><item><title>Updated Wiki: QuickStarts</title><link>http://mefcontrib.codeplex.com/wikipage?title=QuickStarts&amp;version=1</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Quick Starts&lt;/h1&gt;
Welcome to the MEF Quick Starts! Quick Starts are short articles and videos to help tackle common MEF scenarios. Each Quick Start is an independent entry that covers a specific item, and may include a short, easy-to-read article along with a short video demo.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://mefcontrib.codeplex.com/wikipage?title=Introduction%20to%20the%20Managed%20Extensibility%20Framework&amp;referringTitle=QuickStarts"&gt;Introduction to the Managed Extensibility Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mefcontrib.codeplex.com/wikipage?title=Hello%2c%20MEF&amp;referringTitle=QuickStarts"&gt;Hello, MEF&lt;/a&gt; 
&lt;ul&gt;&lt;li&gt;&lt;a href="http://mefcontrib.codeplex.com/wikipage?title=Hello%2c%20MEF%20%28Silverlight%29&amp;referringTitle=QuickStarts"&gt;Hello, MEF &amp;#40;Silverlight&amp;#41;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>jeremylikness</author><pubDate>Thu, 29 Jul 2010 13:44:04 GMT</pubDate><guid isPermaLink="false">Updated Wiki: QuickStarts 20100729014404P</guid></item><item><title>Updated Wiki: Documentation</title><link>http://mefcontrib.codeplex.com/documentation?version=2</link><description>&lt;div class="wikidoc"&gt;&lt;a href="http://mefcontrib.codeplex.com/wikipage?title=QuickStarts&amp;referringTitle=Documentation"&gt;QuickStarts&lt;/a&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>jeremylikness</author><pubDate>Thu, 29 Jul 2010 13:41:19 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20100729014119P</guid></item><item><title>New Comment on "Generic Catalog"</title><link>http://mefcontrib.codeplex.com/wikipage?title=Generic Catalog&amp;ANCHOR#C16055</link><description>Hello,&amp;#10;&amp;#10;I am not being able to get this work, even from the latest SVN of MEFContrib.&amp;#10;&amp;#10;The contract name of the Export is always different from the Import one which results in composition error &amp;#40;No valid exports found...&amp;#41;&amp;#10;&amp;#10;Export&amp;#39;s contract name is &amp;#34;MEFGeneric.IRepository&amp;#40;&amp;#41;&amp;#34;.&amp;#10;Import&amp;#39;s one is &amp;#34;MEFGeneric.IRepository&amp;#40;MEFGeneric.Order&amp;#41;&amp;#34;&amp;#10;&amp;#10;Can someone please tell me why this is so&amp;#63;&amp;#10;&amp;#10;Note&amp;#58; I am using MEF from .NET 4 RTM.&amp;#10;Thanks.</description><author>fkode87</author><pubDate>Wed, 16 Jun 2010 15:58:22 GMT</pubDate><guid isPermaLink="false">New Comment on "Generic Catalog" 20100616035822P</guid></item><item><title>Updated Wiki: Home</title><link>http://mefcontrib.codeplex.com/wikipage?version=51</link><description>&lt;div class="wikidoc"&gt;&lt;h3&gt;&lt;a href="http://www.codeplex.com/MEF" class="externalLink"&gt;Managed Extensibility Framework&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; Contrib &lt;/h3&gt;
&lt;b&gt;The repository found here is no longer being maintained. All active development has been moved to our new &lt;a href="http://github.com/mefcontrib" class="externalLink"&gt;Github repository&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;h3&gt;Project Description&lt;/h3&gt;MEF Contrib is a community-developed library of extensions to the Managed Extensibility Framework &amp;#40;MEF&amp;#41;, a new library in .NET.
&lt;ul&gt;&lt;li&gt;If you are building custom tools and want to share them then MEFContrib will get it out to the masses.&lt;/li&gt;
&lt;li&gt;If you&amp;#39;ve got a great idea for new parts/modules than MEF contrib is the place to find developers ready, willing, and able to make it happen.&lt;/li&gt;
&lt;li&gt;If you use MEF within your org, then MEF contrib is the place to find tools and parts/modules to add to your arsenal.&lt;/li&gt;
&lt;li&gt;If you want to connect with others who are pushing the bar on MEF development, then this is the place to be. &lt;/li&gt;&lt;/ul&gt;
MEF contrib is about YOU. With your help we can make Managed Extensibility Framework Contrib a vibrant resource for MEF developers world-wide.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mefcontrib.codeplex.com/wikipage?title=Documentation%20%26%20Features&amp;referringTitle=Home"&gt;Documentation &amp;#38; Features&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;Contributors&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://thecodejunkie.com" class="externalLink"&gt;Andreas H&amp;#229;kansson&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.noop.se" class="externalLink"&gt;Magnus M&amp;#229;nsson&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://codebetter.com/blogs/glenn.block/" class="externalLink"&gt;Glenn Block&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pwlodek.blogspot.com" class="externalLink"&gt;Piotr Włodek&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://chriswoodruff.com" class="externalLink"&gt;Chris Woodruff&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://csharperimage.jeremylikness.com/" class="externalLink"&gt;Jeremy Likness&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Contributing to MEF Contrib &lt;/h3&gt;Would you like to join as a developer of the MEF Contrib project to share your own extensions or improve the existing codebase? Great! Let us know in the forums&lt;br /&gt;and we&amp;#39;ll hook you up with what you need to know!&lt;br /&gt;
&lt;h3&gt;We would like to thank the following companies for supporing MefContrib!&lt;/h3&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.jetbrains.com&amp;#47;resharper"&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=MEFContrib&amp;DownloadId=113524" alt="ReSharper" title="ReSharper" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.ndepend.com"&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=MEFContrib&amp;DownloadId=113529" alt="NDepend" title="NDepend" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.ncover.com"&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=MEFContrib&amp;DownloadId=113530" alt="NCover" title="NCover" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.tekpub.com"&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=MEFContrib&amp;DownloadId=113531" alt="TekPub" title="TekPub" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>TheCodeJunkie</author><pubDate>Sun, 09 May 2010 19:59:25 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20100509075925P</guid></item><item><title>Updated Wiki: Documentation &amp; Features</title><link>http://mefcontrib.codeplex.com/wikipage?title=Documentation &amp; Features&amp;version=5</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Documentation &amp;amp; Features&lt;/h1&gt;
&lt;h2&gt;Extensions&lt;/h2&gt;Extending the capabilities of MEF 
&lt;ul&gt;&lt;li&gt;&lt;a href="http://mefcontrib.codeplex.com/wikipage?title=Generic%20Catalog&amp;referringTitle=Documentation%20%26%20Features"&gt;Generic Catalog&lt;/a&gt; (&lt;a href="http://codebetter.com/blogs/glenn.block/" class="externalLink"&gt;Glenn Block&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Integration&lt;/h2&gt;Combining MEF with other technologies
&lt;ul&gt;&lt;li&gt;&lt;a href="http://mefcontrib.codeplex.com/wikipage?title=Unity%20Integration&amp;referringTitle=Documentation%20%26%20Features"&gt;Unity Integration&lt;/a&gt; (&lt;a href="http://pwlodek.blogspot.com" class="externalLink"&gt;Piotr Włodek&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Programming Models&lt;/h2&gt;Custom programming models extends MEF with new functionality and capabilities. 
&lt;ul&gt;&lt;li&gt;&lt;a href="http://mefcontrib.codeplex.com/wikipage?title=Provider%20model&amp;referringTitle=Documentation%20%26%20Features"&gt;Provider model&lt;/a&gt; (&lt;a href="http://thecodejunkie.com" class="externalLink"&gt;Andreas H&amp;#229;kansson&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.thecodejunkie.com/2010/03/bringing-convention-based-registration.html" class="externalLink"&gt;Convention Model&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; (&lt;a href="http://thecodejunkie.com" class="externalLink"&gt;Andreas H&amp;#229;kansson&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>TheCodeJunkie</author><pubDate>Fri, 16 Apr 2010 08:21:09 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation &amp; Features 20100416082109A</guid></item><item><title>Updated Wiki: Home</title><link>http://mefcontrib.codeplex.com/wikipage?version=50</link><description>&lt;div class="wikidoc"&gt;&lt;h3&gt;&lt;a href="http://www.codeplex.com/MEF" class="externalLink"&gt;Managed Extensibility Framework&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; Contrib &lt;/h3&gt;
&lt;h3&gt;Project Description&lt;/h3&gt;MEF Contrib is a community-developed library of extensions to the Managed Extensibility Framework &amp;#40;MEF&amp;#41;, a new library in .NET.
&lt;ul&gt;&lt;li&gt;If you are building custom tools and want to share them then MEFContrib will get it out to the masses.&lt;/li&gt;
&lt;li&gt;If you&amp;#39;ve got a great idea for new parts/modules than MEF contrib is the place to find developers ready, willing, and able to make it happen.&lt;/li&gt;
&lt;li&gt;If you use MEF within your org, then MEF contrib is the place to find tools and parts/modules to add to your arsenal.&lt;/li&gt;
&lt;li&gt;If you want to connect with others who are pushing the bar on MEF development, then this is the place to be. &lt;/li&gt;&lt;/ul&gt;
MEF contrib is about YOU. With your help we can make Managed Extensibility Framework Contrib a vibrant resource for MEF developers world-wide.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mefcontrib.codeplex.com/wikipage?title=Documentation%20%26%20Features&amp;referringTitle=Home"&gt;Documentation &amp;#38; Features&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;Contributors&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://thecodejunkie.com" class="externalLink"&gt;Andreas H&amp;#229;kansson&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.noop.se" class="externalLink"&gt;Magnus M&amp;#229;nsson&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://codebetter.com/blogs/glenn.block/" class="externalLink"&gt;Glenn Block&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pwlodek.blogspot.com" class="externalLink"&gt;Piotr Włodek&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://chriswoodruff.com" class="externalLink"&gt;Chris Woodruff&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://csharperimage.jeremylikness.com/" class="externalLink"&gt;Jeremy Likness&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Contributing to MEF Contrib &lt;/h3&gt;Would you like to join as a developer of the MEF Contrib project to share your own extensions or improve the existing codebase? Great! Let us know in the forums&lt;br /&gt;and we&amp;#39;ll hook you up with what you need to know!&lt;br /&gt;
&lt;h3&gt;We would like to thank the following companies for supporing MefContrib!&lt;/h3&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.jetbrains.com&amp;#47;resharper"&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=MEFContrib&amp;DownloadId=113524" alt="ReSharper" title="ReSharper" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.ndepend.com"&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=MEFContrib&amp;DownloadId=113529" alt="NDepend" title="NDepend" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.ncover.com"&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=MEFContrib&amp;DownloadId=113530" alt="NCover" title="NCover" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http&amp;#58;&amp;#47;&amp;#47;www.tekpub.com"&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=MEFContrib&amp;DownloadId=113531" alt="TekPub" title="TekPub" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>TheCodeJunkie</author><pubDate>Tue, 30 Mar 2010 21:38:57 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20100330093857P</guid></item></channel></rss>