<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>Managed Extensibility Framework</title><link>http://mef.codeplex.com/project/feeds/rss</link><description>The Managed Extensibility Framework &amp;#40;MEF&amp;#41; is a library in .NET that enables greater reuse of applications and components. Using MEF, .NET applications can make the shift from being monolithic to dynamically composed. If you are building extensible applications, MEF is for you.</description><item><title>New Post: Multiple metadata with a custom data type</title><link>http://mef.codeplex.com/discussions/341118</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi, thank you for the answer.&lt;/p&gt;
&lt;p&gt;I tried something very similar, but with &lt;em&gt;IMenuAssociationMetadata &lt;/em&gt;in place of Tuple&amp;lt;,&amp;gt; (in the example &lt;em&gt;IExtensionMetadata &lt;/em&gt;is the type that comes into Lazy&amp;lt;T,TMetadata&amp;gt; when importing). This would probably require MEF to generate a backing class not only for &lt;em&gt;IExtensionMetadata&lt;/em&gt;, but also for inner interfaces, and their inner interfaces, so there's actually no wonder it doesn't work.&lt;/p&gt;
&lt;p&gt;What I managed to do finally was use a class instead of interface as metadata signature:&lt;/p&gt;
&lt;div style="color: black; background-color: white;"&gt;
&lt;pre&gt;    &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; ExtensionMetadata : IExtensionMetadata
    {
        &lt;span style="color: blue;"&gt;public&lt;/span&gt; IMenuAssociationMetadata[] Associations { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }

        &lt;span style="color: blue;"&gt;public&lt;/span&gt; ExtensionMetadata(IDictionary&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;, &lt;span style="color: blue;"&gt;object&lt;/span&gt;&amp;gt; metadata)
        {
            &lt;span style="color: blue;"&gt;this&lt;/span&gt;.Associations = &lt;span style="color: green;"&gt;//create it here from dictionary&lt;/span&gt;
        }
    }
&lt;/pre&gt;
&lt;/div&gt;
&lt;pre&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;IMenuAssociationMetadata instances are created 'manually' in the above constructor. Of course, I'm forced to deal with Type[] and string[], but MEF seems to provide valid number of elements in each array and in the right order. I hope it's by design!&lt;/p&gt;
&lt;p&gt;Then I can have &lt;em&gt;Lazy&amp;lt;IExtension, ExtensionMetadata&amp;gt;, &lt;/em&gt;which exposes only the strongly-typed metadata.&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;Paul&lt;/p&gt;&lt;/div&gt;</description><author>rookster</author><pubDate>Wed, 22 Feb 2012 19:29:11 GMT</pubDate><guid isPermaLink="false">New Post: Multiple metadata with a custom data type 20120222072911P</guid></item><item><title>New Post: Surpising ImportMany behavior with RegistrationBuilder</title><link>http://mef.codeplex.com/discussions/341470</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Thanks for the prompt reply.&lt;/p&gt;
&lt;p&gt;Per your suggestion,&amp;nbsp;I was able to get around this by using the SelectConstructor overload that provides access to the ImportBuilder, which allowed me to say: ib.AsMany(false).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks! -John&lt;/p&gt;&lt;/div&gt;</description><author>jlewicki</author><pubDate>Wed, 22 Feb 2012 18:35:22 GMT</pubDate><guid isPermaLink="false">New Post: Surpising ImportMany behavior with RegistrationBuilder 20120222063522P</guid></item><item><title>New Post: Multiple metadata with a custom data type</title><link>http://mef.codeplex.com/discussions/341118</link><description>&lt;div style="line-height: normal;"&gt;
&lt;div&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;Hi,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;The restriction on parameter types impacts the constants you pass into the attribute, but doesn’t restrict what you can present as properties on the attribute type. So the following attribute structure might help:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:.5in"&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;public class MenuAssociationAttribute : Attribute&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:.5in"&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:.5in"&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;public MenuAssociationAttribute(Type type, string name)&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:.5in"&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:.5in"&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;// assign to _type and _name;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:.5in"&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:.5in"&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:.5in"&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;public Tuple&amp;lt;Type, string&amp;gt; Associations { get { return Tuple.Create(_type, _name); } }&lt;br&gt;
}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;Then the metadata view:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:.5in"&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;public interface IMenuAssociationMetadata&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:.5in"&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;{&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:.5in"&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;Tuple&amp;lt;Type, string&amp;gt;[] Associations { get; }&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin-left:.5in"&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;Let us know how you go!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;Cheers,&lt;br&gt;
Nick&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div style="border:none; border-top:solid #B5C4DF 1.0pt; padding:3.0pt 0in 0in 0in"&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-size:10.0pt; font-family:"&gt;From:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10.0pt; font-family:"&gt; rookster [email removed]
&lt;br&gt;
&lt;b&gt;Sent:&lt;/b&gt; Wednesday, February 22, 2012 7:05 AM&lt;br&gt;
&lt;b&gt;To:&lt;/b&gt; Nicholas Blumhardt&lt;br&gt;
&lt;b&gt;Subject:&lt;/b&gt; Multiple metadata with a custom data type [MEF:341118]&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;From: rookster&lt;/span&gt;&lt;/p&gt;
&lt;div id="ThreadNotificationPostBody" style="margin-bottom:24.0pt"&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;I'm attempting to export parts along with multiple metadata defined with the same attribute. As an example consider this class:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;    [Export(&lt;/span&gt;&lt;span style="color:blue"&gt;typeof&lt;/span&gt;&lt;span style="color:black"&gt;(IExtension))]&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;    [MenuAssociation(&lt;/span&gt;&lt;span style="color:blue"&gt;typeof&lt;/span&gt;&lt;span style="color:black"&gt;(WindowContextMenuId), CategoryName = &lt;/span&gt;&lt;span style="color:#A31515"&gt;&amp;quot;window context&amp;quot;&lt;/span&gt;&lt;span style="color:black"&gt;)]&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;    [MenuAssociation(&lt;/span&gt;&lt;span style="color:blue"&gt;typeof&lt;/span&gt;&lt;span style="color:black"&gt;(WorkspaceContextMenuId), CategoryName = &lt;/span&gt;&lt;span style="color:#A31515"&gt;&amp;quot;workspace context&amp;quot;&lt;/span&gt;&lt;span style="color:black"&gt;)]&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;class&lt;/span&gt;&lt;span style="color:black"&gt; ContextMenuExtension : IExtension&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;    {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;    }&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;MenuAssociation is a MetadataAttribute that contains Type and String properties. I'd like to import IExtensions in a way that allows me to view metadata in the following form:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;interface&lt;/span&gt;&lt;span style="color:black"&gt; IExtensionMetadata&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;    {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;        IMenuAssociationMetadata[] Associations { &lt;/span&gt;&lt;span style="color:blue"&gt;get&lt;/span&gt;&lt;span style="color:black"&gt;; }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;    }&lt;/span&gt;&lt;/pre&gt;
&lt;div&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;interface&lt;/span&gt;&lt;span style="color:black"&gt; IMenuAssociationMetadata&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;    {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;        Type Type { &lt;/span&gt;&lt;span style="color:blue"&gt;get&lt;/span&gt;&lt;span style="color:black"&gt;; }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;        &lt;/span&gt;&lt;span style="color:blue"&gt;string&lt;/span&gt;&lt;span style="color:black"&gt; CategoryName { &lt;/span&gt;&lt;span style="color:blue"&gt;get&lt;/span&gt;&lt;span style="color:black"&gt;; }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;    }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;Each IMenuAssociationMetadata instance should contain the (Type, String) info provided by a single occurence of MenuAssociationAttribute. With this setup there's a composition exception that points to c# spec 17.1.3
 about &amp;quot;attribute parameter types&amp;quot;. However, according to the specification, I'm passing valid parameters to the constructor of MenuAssociationAttribute (only string and Type).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;I observed that I can have:&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;    &lt;/span&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;interface&lt;/span&gt;&lt;span style="color:black"&gt; IExtensionMetadata&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;    {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;        Type[] Type { &lt;/span&gt;&lt;span style="color:blue"&gt;get&lt;/span&gt;&lt;span style="color:black"&gt;; }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;        &lt;/span&gt;&lt;span style="color:blue"&gt;string&lt;/span&gt;&lt;span style="color:black"&gt;[] CategoryName { &lt;/span&gt;&lt;span style="color:blue"&gt;get&lt;/span&gt;&lt;span style="color:black"&gt;; }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;    }&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;Then I get two arrays: {&amp;quot;window context&amp;quot;, &amp;quot;workspace context&amp;quot;} and {WindowContextMenuId, WorkspaceContextMenuId}, which isn't too convenient.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;1. Is it at least guaranteed that the order of elements in arrays will correspond to how they are defined with MenuAssociationAttribute? (That the n-th element of the string array always corresponds to the n-th
 element of the type array)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;2. Is there a way to get one array of (Type, string) pairs like e.g. (WindowContextMenuId, &amp;quot;window context&amp;quot;) instead of two separate arrays? For my purpose I find such pairs more coherent logically .&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;3. Should I assume that MEF supports metadata with AllowMultiple=true, but only if the data type is one of the &amp;quot;attribute parameter types&amp;quot; mentioned in the specification?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;I'm currently using MEF 2 Preview 5, if it matters.&lt;/span&gt;&lt;/p&gt;
&lt;div id="_mcePaste"&gt;
&lt;pre style="background:#10100D"&gt;&lt;span style="font-size:12.0pt; color:#D6D694"&gt;interface&lt;/span&gt;&lt;span style="font-size:12.0pt; color:lime"&gt; &lt;/span&gt;&lt;span style="font-size:12.0pt; color:#80FF80"&gt;IMenuAssociationMetadata&lt;/span&gt;&lt;span style="font-size:12.0pt; color:lime"&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description><author>nblumhardt</author><pubDate>Wed, 22 Feb 2012 18:26:42 GMT</pubDate><guid isPermaLink="false">New Post: Multiple metadata with a custom data type 20120222062642P</guid></item><item><title>New Post: Surpising ImportMany behavior with RegistrationBuilder</title><link>http://mef.codeplex.com/discussions/341470</link><description>&lt;div style="line-height: normal;"&gt;
&lt;div&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;Hi there – thanks for the report.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;This was by design, though we can see that the experience here could use a bit of improvement.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;There are two ways to switch this import back to a “single” import:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent:-.25in"&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;&lt;span style=""&gt;1.&lt;span style="font:7.0pt"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;Place the [ImportingConstructor] attribute on the SomeOtherService constructor and apply an [Import] attribute to the someService parameter&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-indent:-.25in"&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;&lt;span style=""&gt;2.&lt;span style="font:7.0pt"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;In the registration rule for SomeOtherService, use .AsMany(false) to configure the someService parameter&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;Does either option work in your scenario?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;Cheers,&lt;br&gt;
Nick&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div style="border:none; border-top:solid #B5C4DF 1.0pt; padding:3.0pt 0in 0in 0in"&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-size:10.0pt; font-family:"&gt;From:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10.0pt; font-family:"&gt; jlewicki [email removed]
&lt;br&gt;
&lt;b&gt;Sent:&lt;/b&gt; Wednesday, February 22, 2012 8:49 AM&lt;br&gt;
&lt;b&gt;To:&lt;/b&gt; Nicholas Blumhardt&lt;br&gt;
&lt;b&gt;Subject:&lt;/b&gt; Surpising ImportMany behavior with RegistrationBuilder [MEF:341470]&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;From: jlewicki&lt;/span&gt;&lt;/p&gt;
&lt;div id="ThreadNotificationPostBody" style="margin-bottom:24.0pt"&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;I've run into an issue with RegistrationBuilder that I found somewhat surprising, and I might be inclined to think it could be a bug.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;The issue I ran into was that I have a service (call it SomeOtherService) that depends on another service (call it ISomeService). SomeOtherService accepts a ISomeService instance in its constructor:&lt;br&gt;
public SomeOtherService( ISomeService someService )&lt;br&gt;
{&lt;br&gt;
this.someService = someService;&lt;br&gt;
}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;I set up a registration builder that registers these services with a couple lines of code. Easy peasy. However when I attempt to resolve an instance of SomeOtherService, MEF throws an exception:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;The importing constructor on type 'MefRegistrationIssue.SomeOtherService' is using ImportManyAttribute on parameter 'someService' with a non-assignable type. On constructor parameters the ImportManyAttribute only
 supports importing into types T[] or IEnumerable&amp;lt;T&amp;gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;I was confused by this for a bit, because clearly the SomeOtherService constructor accepts a single instance, not an enumerable.&lt;br&gt;
The catch is that ISomeService itself inherits from IEnumerable&amp;lt;string&amp;gt;, which seems to trick MEF into registering the import as a ImportMany. Looking at the MEF source code (it's awesome that you put it out there!), the offending line of code is in ImportBuilder.BuildAttributes:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;bool asMany = (!this._asManySpecified) ? type != StringType &amp;&amp; typeof(IEnumerable).IsAssignableFrom(type) : this._asMany;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;The condition typeof(IEnumerable).IsAssignableFrom(type) is obviously the culprit here, since ISomeService is assignable to IEnumerable. I wonder if the condition needs to be more clever here, for example by matching
 exactly on IEnumerable/IEnumerable&amp;lt;T&amp;gt; instead of checking for type compatibility. Or is this working exactly as intended?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;Heres the test case:&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt;&lt;span style="color:black"&gt; System.Collections;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt;&lt;span style="color:black"&gt; System.Collections.Generic;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt;&lt;span style="color:black"&gt; System.ComponentModel.Composition.Hosting;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt;&lt;span style="color:black"&gt; System.ComponentModel.Composition.Registration;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt;&lt;span style="color:black"&gt; System.Reflection;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:blue"&gt;namespace&lt;/span&gt;&lt;span style="color:black"&gt; MefRegistrationIssue&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;{&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;interface&lt;/span&gt;&lt;span style="color:black"&gt; ISomeService : IEnumerable&amp;lt;&lt;/span&gt;&lt;span style="color:blue"&gt;string&lt;/span&gt;&lt;span style="color:black"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  &lt;/span&gt;&lt;span style="color:blue"&gt;int&lt;/span&gt;&lt;span style="color:black"&gt; GetANumber();&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;class&lt;/span&gt;&lt;span style="color:black"&gt; SomeService : ISomeService&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  &lt;/span&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;int&lt;/span&gt;&lt;span style="color:black"&gt; GetANumber()&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;   &lt;/span&gt;&lt;span style="color:blue"&gt;return&lt;/span&gt;&lt;span style="color:black"&gt; 2;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  &lt;/span&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;&lt;span style="color:black"&gt; IEnumerator&amp;lt;&lt;/span&gt;&lt;span style="color:blue"&gt;string&lt;/span&gt;&lt;span style="color:black"&gt;&amp;gt; GetEnumerator()&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;   &lt;/span&gt;&lt;span style="color:blue"&gt;yield&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;return&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:#A31515"&gt;&amp;quot;foo&amp;quot;&lt;/span&gt;&lt;span style="color:black"&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;   &lt;/span&gt;&lt;span style="color:blue"&gt;yield&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;return&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:#A31515"&gt;&amp;quot;bar&amp;quot;&lt;/span&gt;&lt;span style="color:black"&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  IEnumerator IEnumerable.GetEnumerator()&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;   &lt;/span&gt;&lt;span style="color:blue"&gt;return&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;this&lt;/span&gt;&lt;span style="color:black"&gt;.GetEnumerator();&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;class&lt;/span&gt;&lt;span style="color:black"&gt; SomeOtherService&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  &lt;/span&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;&lt;span style="color:black"&gt; SomeOtherService( ISomeService someService )&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;   &lt;/span&gt;&lt;span style="color:blue"&gt;this&lt;/span&gt;&lt;span style="color:black"&gt;.someService = someService;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  &lt;/span&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;int&lt;/span&gt;&lt;span style="color:black"&gt; DoWork()&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;   &lt;/span&gt;&lt;span style="color:blue"&gt;return&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;this&lt;/span&gt;&lt;span style="color:black"&gt;.someService.GetANumber();&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  ISomeService someService;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;class&lt;/span&gt;&lt;span style="color:black"&gt; Program&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  &lt;/span&gt;&lt;span style="color:blue"&gt;static&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;void&lt;/span&gt;&lt;span style="color:black"&gt; Main( &lt;/span&gt;&lt;span style="color:blue"&gt;string&lt;/span&gt;&lt;span style="color:black"&gt;[] args )&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  {&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;     &lt;/span&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt;&lt;span style="color:black"&gt; builder = &lt;/span&gt;&lt;span style="color:blue"&gt;new&lt;/span&gt;&lt;span style="color:black"&gt; RegistrationBuilder();&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;     builder.ForType&amp;lt;SomeService&amp;gt;().Export&amp;lt;ISomeService&amp;gt;();&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;     builder.ForType&amp;lt;SomeOtherService&amp;gt;().Export();&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;     &lt;/span&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt;&lt;span style="color:black"&gt; container = &lt;/span&gt;&lt;span style="color:blue"&gt;new&lt;/span&gt;&lt;span style="color:black"&gt; CompositionContainer( &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;        &lt;/span&gt;&lt;span style="color:blue"&gt;new&lt;/span&gt;&lt;span style="color:black"&gt; AssemblyCatalog( Assembly.GetExecutingAssembly(), builder ) );&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;   &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;     &lt;/span&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt;&lt;span style="color:black"&gt; someOtherService =   container.GetExportedValue&amp;lt;SomeOtherService&amp;gt;();&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;     someOtherService.DoWork();&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;  }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description><author>nblumhardt</author><pubDate>Wed, 22 Feb 2012 18:20:42 GMT</pubDate><guid isPermaLink="false">New Post: Surpising ImportMany behavior with RegistrationBuilder 20120222062042P</guid></item><item><title>New Post: Inside class inherit base class which can't import .</title><link>http://mef.codeplex.com/discussions/334351</link><description>&lt;div style="line-height: normal;"&gt;
&lt;div&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;Hi – I think what Alok is asking is, how is EditViewModel&amp;lt;T&amp;gt; being exported? If it is not being exported at all, are you using something like SatisfyImportsOnce() to set its imports? Classes with imports need
 to be either exported themselves, or composed using one of the methods on the container, in order for their imports to be set.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;Hope this helps,&lt;br&gt;
Nick&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div style="border:none; border-top:solid #B5C4DF 1.0pt; padding:3.0pt 0in 0in 0in"&gt;
&lt;p&gt;&lt;b&gt;&lt;span style="font-size:10.0pt; font-family:"&gt;From:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10.0pt; font-family:"&gt; Cuiqs [email removed]
&lt;br&gt;
&lt;b&gt;Sent:&lt;/b&gt; Wednesday, February 22, 2012 5:12 AM&lt;br&gt;
&lt;b&gt;To:&lt;/b&gt; Nicholas Blumhardt&lt;br&gt;
&lt;b&gt;Subject:&lt;/b&gt; Re: Inside class inherit base class which can't import . [MEF:334351]&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;From: Cuiqs&lt;/span&gt;&lt;/p&gt;
&lt;div id="ThreadNotificationPostBody" style="margin-bottom:24.0pt"&gt;
&lt;blockquote style="border:solid #CCCCCC 1.5pt; padding:0in 3.0pt 0in 3.0pt; margin-left:12.0pt; margin-top:3.0pt; margin-right:12.0pt"&gt;
&lt;p&gt;&lt;i&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;the Exporting in another module.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;If in the EditViewModel constractor use below code. it work fine.&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt;&lt;i&gt; public EditViewModel()&lt;/i&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;i&gt;        {&lt;/i&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;i&gt;      &lt;/i&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;i&gt;            this.Shell = ServiceLocator.Current.GetInstance&amp;lt;IShellViewModel&amp;gt;();&lt;/i&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;i&gt;            this.RegionManager = ServiceLocator.Current.GetInstance&amp;lt;IRegionManager&amp;gt;();&lt;/i&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;i&gt;          &lt;/i&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;i&gt;        }&lt;/i&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;i&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote style="border:solid #CCCCCC 1.5pt; padding:0in 3.0pt 0in 3.0pt; margin-left:12.0pt; margin-top:3.0pt; margin-right:12.0pt"&gt;
&lt;p&gt;&lt;i&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote style="border:solid #CCCCCC 1.5pt; padding:0in 3.0pt 0in 3.0pt; margin-left:12.0pt; margin-top:3.0pt; margin-right:12.0pt"&gt;
&lt;p&gt;&lt;strong&gt;&lt;i&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;alokshriram wrote:&lt;/span&gt;&lt;/i&gt;&lt;/strong&gt;&lt;i&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote style="border:solid #CCCCCC 1.5pt; padding:0in 3.0pt 0in 3.0pt; margin-left:12.0pt; margin-top:3.0pt; margin-right:12.0pt"&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p&gt;&lt;i&gt;&lt;span style="font-size:11.0pt; font-family:"&gt;What ate you exporting?? Cannot tell from the code you have provided.&lt;br&gt;
&lt;br&gt;
- alok&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div align="center" style="text-align:center"&gt;&lt;i&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;
&lt;hr size="3" width="100%" align="center"&gt;
&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;p style="margin-bottom:12.0pt"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="font-size:10.0pt; font-family:"&gt;From:
&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;span style="font-size:10.0pt; font-family:"&gt;Cuiqs&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;&lt;br&gt;
&lt;/span&gt;&lt;/i&gt;&lt;b&gt;&lt;i&gt;&lt;span style="font-size:10.0pt; font-family:"&gt;Sent: &lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;span style="font-size:10.0pt; font-family:"&gt;2/20/2012 9:09 PM&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;&lt;br&gt;
&lt;/span&gt;&lt;/i&gt;&lt;b&gt;&lt;i&gt;&lt;span style="font-size:10.0pt; font-family:"&gt;To: &lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;span style="font-size:10.0pt; font-family:"&gt;Alok Shriram&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;&lt;br&gt;
&lt;/span&gt;&lt;/i&gt;&lt;b&gt;&lt;i&gt;&lt;span style="font-size:10.0pt; font-family:"&gt;Subject: &lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;span style="font-size:10.0pt; font-family:"&gt;Inside class inherit base class which can't import . [MEF:334351]&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;&lt;i&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;From: Cuiqs&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;div id="ThreadNotificationPostBody" style="margin-bottom:24.0pt"&gt;
&lt;p&gt;&lt;i&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;div&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;Public Class RoleViewModel&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;{&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;       &lt;/span&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;&lt;span style="color:black"&gt; List&amp;lt;RoleEditViewModel&amp;gt; Role&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;        {&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;            &lt;/span&gt;&lt;span style="color:blue"&gt;get&lt;/span&gt;&lt;span style="color:black"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;            {&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;                &lt;/span&gt;&lt;span style="color:blue"&gt;if&lt;/span&gt;&lt;span style="color:black"&gt; (Model == &lt;/span&gt;&lt;span style="color:blue"&gt;null&lt;/span&gt;&lt;span style="color:black"&gt;)&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;                    &lt;/span&gt;&lt;span style="color:blue"&gt;return&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;null&lt;/span&gt;&lt;span style="color:black"&gt;;&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;                &lt;/span&gt;&lt;span style="color:blue"&gt;else&lt;/span&gt;&lt;span style="color:black"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;                    &lt;/span&gt;&lt;span style="color:blue"&gt;return&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;new&lt;/span&gt;&lt;span style="color:black"&gt; List&amp;lt;RoleEditViewModel&amp;gt; { &lt;/span&gt;&lt;span style="color:blue"&gt;new&lt;/span&gt;&lt;span style="color:black"&gt; RoleEditViewModel(&lt;/span&gt;&lt;span style="color:blue"&gt;this&lt;/span&gt;&lt;span style="color:black"&gt;, Model.Role) };&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;            }&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;        }&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;   &lt;/span&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;class&lt;/span&gt;&lt;span style="color:black"&gt; RoleEditViewModel: EditViewModel&amp;lt;Role&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;        {   &lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;  &lt;/span&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;&lt;span style="color:black"&gt; RoleViewModel Parent { &lt;/span&gt;&lt;span style="color:blue"&gt;get&lt;/span&gt;&lt;span style="color:black"&gt;; &lt;/span&gt;&lt;span style="color:blue"&gt;private&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;set&lt;/span&gt;&lt;span style="color:black"&gt;; }&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;            &lt;/span&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;&lt;span style="color:black"&gt; RoleEditViewModel(RoleViewModel parent, Role role)&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;            {&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;                ManageObjectLifetime = &lt;/span&gt;&lt;span style="color:blue"&gt;false&lt;/span&gt;&lt;span style="color:black"&gt;;&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;                Parent = parent;&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;                Model = role;&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;                &lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;            }  &lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;}&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;}&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;  &lt;/span&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;span style="color:blue"&gt;class&lt;/span&gt;&lt;span style="color:black"&gt; EditViewModel&amp;lt;T&amp;gt; : Csla.Xaml.ViewModelBase&amp;lt;T&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;{&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;   [Import]&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;        &lt;/span&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;&lt;span style="color:black"&gt; IRegionManager RegionManager { &lt;/span&gt;&lt;span style="color:blue"&gt;get&lt;/span&gt;&lt;span style="color:black"&gt;; &lt;/span&gt;&lt;span style="color:blue"&gt;set&lt;/span&gt;&lt;span style="color:black"&gt;; }&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;        [Import]&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;        &lt;/span&gt;&lt;span style="color:blue"&gt;public&lt;/span&gt;&lt;span style="color:black"&gt; IShellViewModel Shell { &lt;/span&gt;&lt;span style="color:blue"&gt;get&lt;/span&gt;&lt;span style="color:black"&gt;; &lt;/span&gt;&lt;span style="color:blue"&gt;set&lt;/span&gt;&lt;span style="color:black"&gt;; }&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;}&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt;Run the code ,the RegionManager &amp; Shell  are &lt;/span&gt;&lt;span style="color:blue"&gt;null&lt;/span&gt;&lt;span style="color:black"&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;pre style="background:white"&gt;&lt;i&gt;&lt;span style="color:black"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;i&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span style="font-size:9.0pt; font-family:"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description><author>nblumhardt</author><pubDate>Wed, 22 Feb 2012 17:31:42 GMT</pubDate><guid isPermaLink="false">New Post: Inside class inherit base class which can't import . 20120222053142P</guid></item><item><title>New Post: Surpising ImportMany behavior with RegistrationBuilder</title><link>http://mef.codeplex.com/discussions/341470</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;I've run into an issue with RegistrationBuilder that I found somewhat surprising, and I might be inclined to think it could be a bug.&lt;/p&gt;
&lt;p&gt;Here is my situation: I have a service (call it SomeOtherService) that depends on another service (call it ISomeService).&amp;nbsp; SomeOtherService accepts an ISomeService instance in its constructor:&lt;br /&gt;public SomeOtherService( ISomeService someService )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; this.someService = someService;&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;I set up a registration builder that registers these services with a couple lines of code.&amp;nbsp; Easy peasy. However when I attempt to resolve an instance of SomeOtherService, MEF throws an exception:&lt;/p&gt;
&lt;p&gt;The importing constructor on type 'MefRegistrationIssue.SomeOtherService' is using ImportManyAttribute on parameter 'someService' with a non-assignable type. On constructor parameters the ImportManyAttribute only supports importing into types T[] or IEnumerable&amp;lt;T&amp;gt;.&lt;/p&gt;
&lt;p&gt;I was confused by this for a bit, because clearly the SomeOtherService constructor accepts a single instance, not an enumerable.&lt;br /&gt;The catch is that ISomeService itself inherits from IEnumerable&amp;lt;string&amp;gt;, which seems to trick MEF into registering the import as a ImportMany.&amp;nbsp; Looking at the MEF source code (it's awesome that you put it out there!), the offending line of code is in ImportBuilder.BuildAttributes:&lt;/p&gt;
&lt;p&gt;bool asMany = (!this._asManySpecified) ? type != StringType &amp;amp;&amp;amp; typeof(IEnumerable).IsAssignableFrom(type) : this._asMany;&lt;/p&gt;
&lt;p&gt;The condition typeof(IEnumerable).IsAssignableFrom(type) is obviously the culprit here, since ISomeService is assignable to IEnumerable.&amp;nbsp; I&amp;nbsp;wonder if the condition needs to be more clever here, for example by matching exactly on IEnumerable/IEnumerable&amp;lt;T&amp;gt; instead of checking for type compatibility.&amp;nbsp; Or is this working exactly as intended?&lt;/p&gt;
&lt;p&gt;For what its worth, the actual services I am working with are third party code, and I don't have the freedom to alter the interfaces.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Heres the test case:&lt;/p&gt;
&lt;div style="background-color: white; color: black;"&gt;
&lt;pre&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Collections;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.ComponentModel.Composition.Hosting;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.ComponentModel.Composition.Registration;
&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Reflection;

&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; MefRegistrationIssue
{
 &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;interface&lt;/span&gt; ISomeService : IEnumerable&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt;
 {
  &lt;span style="color: blue;"&gt;int&lt;/span&gt; GetANumber();
 }
 
 &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; SomeService : ISomeService
 {
  &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; GetANumber()
  {
   &lt;span style="color: blue;"&gt;return&lt;/span&gt; 2;
  }

  &lt;span style="color: blue;"&gt;public&lt;/span&gt; IEnumerator&amp;lt;&lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; GetEnumerator()
  {
   &lt;span style="color: blue;"&gt;yield&lt;/span&gt; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: #a31515;"&gt;"foo"&lt;/span&gt;;
   &lt;span style="color: blue;"&gt;yield&lt;/span&gt; &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: #a31515;"&gt;"bar"&lt;/span&gt;;
  }

  IEnumerator IEnumerable.GetEnumerator()
  {
   &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.GetEnumerator();
  }
 }

 &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; SomeOtherService
 {
  &lt;span style="color: blue;"&gt;public&lt;/span&gt; SomeOtherService( ISomeService someService )
  {
   &lt;span style="color: blue;"&gt;this&lt;/span&gt;.someService = someService;
  }

  &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; DoWork()
  {
   &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.someService.GetANumber();
  }

  ISomeService someService;
 }


 &lt;span style="color: blue;"&gt;class&lt;/span&gt; Program
 {
  &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Main( &lt;span style="color: blue;"&gt;string&lt;/span&gt;[] args )
  {
     &lt;span style="color: blue;"&gt;var&lt;/span&gt; builder = &lt;span style="color: blue;"&gt;new&lt;/span&gt; RegistrationBuilder();
     builder.ForType&amp;lt;SomeService&amp;gt;().Export&amp;lt;ISomeService&amp;gt;();
     builder.ForType&amp;lt;SomeOtherService&amp;gt;().Export();

     &lt;span style="color: blue;"&gt;var&lt;/span&gt; container = &lt;span style="color: blue;"&gt;new&lt;/span&gt; CompositionContainer( 
        &lt;span style="color: blue;"&gt;new&lt;/span&gt; AssemblyCatalog( Assembly.GetExecutingAssembly(), builder ) );
   
     &lt;span style="color: blue;"&gt;var&lt;/span&gt; someOtherService =   container.GetExportedValue&amp;lt;SomeOtherService&amp;gt;();
     someOtherService.DoWork();
  }

 }
}

 

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description><author>jlewicki</author><pubDate>Wed, 22 Feb 2012 16:48:59 GMT</pubDate><guid isPermaLink="false">New Post: Surpising ImportMany behavior with RegistrationBuilder 20120222044859P</guid></item><item><title>New Post: Multiple metadata with a custom data type</title><link>http://mef.codeplex.com/discussions/341118</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;I'm attempting to export parts along with multiple metadata defined with the same attribute. As an example consider this class:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;    [Export(&lt;span style="color:blue"&gt;typeof&lt;/span&gt;(IExtension))]
    [MenuAssociation(&lt;span style="color:blue"&gt;typeof&lt;/span&gt;(WindowContextMenuId), CategoryName = &lt;span style="color:#a31515"&gt;&amp;quot;window context&amp;quot;&lt;/span&gt;)]
    [MenuAssociation(&lt;span style="color:blue"&gt;typeof&lt;/span&gt;(WorkspaceContextMenuId), CategoryName = &lt;span style="color:#a31515"&gt;&amp;quot;workspace context&amp;quot;&lt;/span&gt;)]
    &lt;span style="color:blue"&gt;class&lt;/span&gt; ContextMenuExtension : IExtension
    {

    }
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;MenuAssociation is a MetadataAttribute that contains Type and String properties. I'd like to import IExtensions in a way that allows me to view metadata in the following form:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;    &lt;span style="color:blue"&gt;public&lt;/span&gt; &lt;span style="color:blue"&gt;interface&lt;/span&gt; IExtensionMetadata
    {
        IMenuAssociationMetadata[] Associations { &lt;span style="color:blue"&gt;get&lt;/span&gt;; }
    }&lt;br&gt;&lt;div style="color:black; background-color:white"&gt;&lt;pre&gt;    &lt;span style="color:blue"&gt;public&lt;/span&gt; &lt;span style="color:blue"&gt;interface&lt;/span&gt; IMenuAssociationMetadata
    {
        Type Type { &lt;span style="color:blue"&gt;get&lt;/span&gt;; }
        &lt;span style="color:blue"&gt;string&lt;/span&gt; CategoryName { &lt;span style="color:blue"&gt;get&lt;/span&gt;; }
    }
&lt;/pre&gt;
&lt;/div&gt;
&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Each IMenuAssociationMetadata instance should contain the (Type, String) info provided by a single occurence of MenuAssociationAttribute. With this setup there's a composition exception that points to c# spec 17.1.3 about &amp;quot;attribute parameter types&amp;quot;. However,
 according to the specification, I'm passing valid parameters to the constructor of MenuAssociationAttribute (only string and Type).&lt;/p&gt;
&lt;p&gt;I observed that I can have:&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;    &lt;span style="color:blue"&gt;public&lt;/span&gt; &lt;span style="color:blue"&gt;interface&lt;/span&gt; IExtensionMetadata
    {
        Type[] Type { &lt;span style="color:blue"&gt;get&lt;/span&gt;; }
        &lt;span style="color:blue"&gt;string&lt;/span&gt;[] CategoryName { &lt;span style="color:blue"&gt;get&lt;/span&gt;; }
    }
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Then I get two arrays: {&amp;quot;window context&amp;quot;, &amp;quot;workspace context&amp;quot;} and {WindowContextMenuId, WorkspaceContextMenuId}, which isn't too convenient.&lt;/p&gt;
&lt;p&gt;1. Is it at least guaranteed that the order of elements in arrays will correspond to how they are defined with MenuAssociationAttribute? (That the n-th element of the string array&amp;nbsp; always corresponds to the n-th element of the type array)&lt;/p&gt;
&lt;p&gt;2. Is there a way to get one array of (Type, string) pairs like e.g. (WindowContextMenuId, &amp;quot;window context&amp;quot;) instead of two separate arrays? For my purpose I find such pairs more coherent logically .&lt;/p&gt;
&lt;p&gt;3. Should I assume that MEF supports metadata with AllowMultiple=true, but only if the data type is one of the &amp;quot;attribute parameter types&amp;quot; mentioned in the specification?&lt;/p&gt;
&lt;p&gt;I'm currently using MEF 2 Preview 5, if it matters.&lt;/p&gt;
&lt;div id="_mcePaste" style="left:-10000px; top:0px; width:1px; height:1px; overflow:hidden"&gt;
&lt;pre style="font-family:Courier New; font-size:16; color:lime; background:#10100d"&gt;&lt;span style="color:#d6d694"&gt;interface&lt;/span&gt;&amp;nbsp;&lt;span style="color:#80ff80"&gt;IMenuAssociationMetadata&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;</description><author>rookster</author><pubDate>Wed, 22 Feb 2012 15:04:31 GMT</pubDate><guid isPermaLink="false">New Post: Multiple metadata with a custom data type 20120222030431P</guid></item><item><title>New Post: Inside class inherit base class which can't import .</title><link>http://mef.codeplex.com/discussions/334351</link><description>&lt;div style="line-height: normal;"&gt;&lt;blockquote style="border: solid .1em #ccc; font-style: italic; margin: .25em 1em 0 1em; padding: 0 .25em 0 .25em;"&gt;
&lt;p&gt;the Exporting in another module.&lt;/p&gt;
&lt;p&gt;If &amp;nbsp;in the EditViewModel &amp;nbsp;constractor use below code. it work fine.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;pre&gt; &lt;span&gt;public&lt;/span&gt; EditViewModel()
        {
      
            &lt;span&gt;this&lt;/span&gt;.Shell = ServiceLocator.Current.GetInstance&amp;lt;IShellViewModel&amp;gt;();
            &lt;span&gt;this&lt;/span&gt;.RegionManager = ServiceLocator.Current.GetInstance&amp;lt;IRegionManager&amp;gt;();
          
        }&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;&lt;/blockquote&gt;
&lt;blockquote style="border: solid .1em #ccc; font-style: italic; margin: .25em 1em 0 1em; padding: 0 .25em 0 .25em;"&gt;&lt;br /&gt;&lt;/blockquote&gt;
&lt;blockquote style="border: solid .1em #ccc; font-style: italic; margin: .25em 1em 0 1em; padding: 0 .25em 0 .25em;"&gt;&lt;strong&gt;alokshriram wrote:&lt;/strong&gt;&lt;br /&gt;&lt;/blockquote&gt;
&lt;blockquote style="border: solid .1em #ccc; font-style: italic; margin: .25em 1em 0 1em; padding: 0 .25em 0 .25em;"&gt;
&lt;div&gt;
&lt;div style="font-family: Calibri,sans-serif; font-size: 11pt;"&gt;What ate you exporting?? Cannot tell from the code you have provided.&lt;br /&gt; &lt;br /&gt; - alok&lt;/div&gt;
&lt;/div&gt;
&lt;hr /&gt;
&lt;span style="font-family: Tahoma,sans-serif; font-size: 10pt; font-weight: bold;"&gt;From: &lt;/span&gt;&lt;span style="font-family: Tahoma,sans-serif; font-size: 10pt;"&gt;Cuiqs&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: Tahoma,sans-serif; font-size: 10pt; font-weight: bold;"&gt;Sent: &lt;/span&gt;&lt;span style="font-family: Tahoma,sans-serif; font-size: 10pt;"&gt;2/20/2012 9:09 PM&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: Tahoma,sans-serif; font-size: 10pt; font-weight: bold;"&gt;To: &lt;/span&gt;&lt;span style="font-family: Tahoma,sans-serif; font-size: 10pt;"&gt;Alok Shriram&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: Tahoma,sans-serif; font-size: 10pt; font-weight: bold;"&gt;Subject: &lt;/span&gt;&lt;span style="font-family: Tahoma,sans-serif; font-size: 10pt;"&gt;Inside class inherit base class which can't import . [MEF:334351]&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;
&lt;div&gt;
&lt;p&gt;From: Cuiqs&lt;/p&gt;
&lt;div id="ThreadNotificationPostBody"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="color: black; background-color: white;"&gt;
&lt;pre&gt;Public Class RoleViewModel
{

       &lt;span style="color: blue;"&gt;public&lt;/span&gt; List&amp;lt;RoleEditViewModel&amp;gt; Role
        {
            &lt;span style="color: blue;"&gt;get&lt;/span&gt;
            {
                &lt;span style="color: blue;"&gt;if&lt;/span&gt; (Model == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)
                    &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;null&lt;/span&gt;;
                &lt;span style="color: blue;"&gt;else&lt;/span&gt;
                    &lt;span style="color: blue;"&gt;return&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt; List&amp;lt;RoleEditViewModel&amp;gt; { &lt;span style="color: blue;"&gt;new&lt;/span&gt; RoleEditViewModel(&lt;span style="color: blue;"&gt;this&lt;/span&gt;, Model.Role) };
            }
        }

   &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; RoleEditViewModel: EditViewModel&amp;lt;Role&amp;gt;
        {   
  &lt;span style="color: blue;"&gt;public&lt;/span&gt; RoleViewModel Parent { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }
            &lt;span style="color: blue;"&gt;public&lt;/span&gt; RoleEditViewModel(RoleViewModel parent, Role role)
            {
                ManageObjectLifetime = &lt;span style="color: blue;"&gt;false&lt;/span&gt;;
                Parent = parent;
                Model = role;
                
            }  
}

}


  &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; EditViewModel&amp;lt;T&amp;gt; : Csla.Xaml.ViewModelBase&amp;lt;T&amp;gt;
{
   [Import]
        &lt;span style="color: blue;"&gt;public&lt;/span&gt; IRegionManager RegionManager { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }

        [Import]
        &lt;span style="color: blue;"&gt;public&lt;/span&gt; IShellViewModel Shell { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }

}

Run the code ,the RegionManager &amp;amp; Shell  are &lt;span style="color: blue;"&gt;null&lt;/span&gt;.

&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;</description><author>Cuiqs</author><pubDate>Wed, 22 Feb 2012 13:12:01 GMT</pubDate><guid isPermaLink="false">New Post: Inside class inherit base class which can't import . 20120222011201P</guid></item><item><title>New Post: Inside class inherit base class which can't import .</title><link>http://mef.codeplex.com/discussions/334351</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;the Exporting in another module.&lt;/p&gt;
&lt;p&gt;If &amp;nbsp;in the EditViewModel &amp;nbsp;constractor use below code. it work fine.&lt;/p&gt;
&lt;p&gt;
&lt;div style="color: black; background-color: white;"&gt;
&lt;pre&gt; &lt;span style="color: blue;"&gt;public&lt;/span&gt; EditViewModel()
        {
      
            &lt;span style="color: blue;"&gt;this&lt;/span&gt;.Shell = ServiceLocator.Current.GetInstance&amp;lt;IShellViewModel&amp;gt;();
            &lt;span style="color: blue;"&gt;this&lt;/span&gt;.RegionManager = ServiceLocator.Current.GetInstance&amp;lt;IRegionManager&amp;gt;();
          
        }
&lt;/pre&gt;
&lt;/div&gt;
&lt;/p&gt;&lt;/div&gt;</description><author>Cuiqs</author><pubDate>Tue, 21 Feb 2012 12:59:02 GMT</pubDate><guid isPermaLink="false">New Post: Inside class inherit base class which can't import . 20120221125902P</guid></item><item><title>New Post: Inside class inherit base class which can't import .</title><link>http://mef.codeplex.com/discussions/334351</link><description>&lt;div style="line-height: normal;"&gt;
&lt;div&gt;
&lt;div style="font-family:Calibri,sans-serif; font-size:11pt"&gt;What ate you exporting?? Cannot tell from the code you have provided.&lt;br&gt;
&lt;br&gt;
- alok&lt;br&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;span style="font-family:Tahoma,sans-serif; font-size:10pt; font-weight:bold"&gt;From:
&lt;/span&gt;&lt;span style="font-family:Tahoma,sans-serif; font-size:10pt"&gt;Cuiqs&lt;/span&gt;&lt;br&gt;
&lt;span style="font-family:Tahoma,sans-serif; font-size:10pt; font-weight:bold"&gt;Sent:
&lt;/span&gt;&lt;span style="font-family:Tahoma,sans-serif; font-size:10pt"&gt;2/20/2012 9:09 PM&lt;/span&gt;&lt;br&gt;
&lt;span style="font-family:Tahoma,sans-serif; font-size:10pt; font-weight:bold"&gt;To:
&lt;/span&gt;&lt;span style="font-family:Tahoma,sans-serif; font-size:10pt"&gt;Alok Shriram&lt;/span&gt;&lt;br&gt;
&lt;span style="font-family:Tahoma,sans-serif; font-size:10pt; font-weight:bold"&gt;Subject:
&lt;/span&gt;&lt;span style="font-family:Tahoma,sans-serif; font-size:10pt"&gt;Inside class inherit base class which can't import . [MEF:334351]&lt;/span&gt;&lt;br&gt;
&lt;br&gt;
&lt;div&gt;
&lt;p&gt;From: Cuiqs&lt;/p&gt;
&lt;div id="ThreadNotificationPostBody"&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;Public Class RoleViewModel
{

       &lt;span style="color:blue"&gt;public&lt;/span&gt; List&amp;lt;RoleEditViewModel&amp;gt; Role
        {
            &lt;span style="color:blue"&gt;get&lt;/span&gt;
            {
                &lt;span style="color:blue"&gt;if&lt;/span&gt; (Model == &lt;span style="color:blue"&gt;null&lt;/span&gt;)
                    &lt;span style="color:blue"&gt;return&lt;/span&gt; &lt;span style="color:blue"&gt;null&lt;/span&gt;;
                &lt;span style="color:blue"&gt;else&lt;/span&gt;
                    &lt;span style="color:blue"&gt;return&lt;/span&gt; &lt;span style="color:blue"&gt;new&lt;/span&gt; List&amp;lt;RoleEditViewModel&amp;gt; { &lt;span style="color:blue"&gt;new&lt;/span&gt; RoleEditViewModel(&lt;span style="color:blue"&gt;this&lt;/span&gt;, Model.Role) };
            }
        }

   &lt;span style="color:blue"&gt;public&lt;/span&gt; &lt;span style="color:blue"&gt;class&lt;/span&gt; RoleEditViewModel: EditViewModel&amp;lt;Role&amp;gt;
        {   
  &lt;span style="color:blue"&gt;public&lt;/span&gt; RoleViewModel Parent { &lt;span style="color:blue"&gt;get&lt;/span&gt;; &lt;span style="color:blue"&gt;private&lt;/span&gt; &lt;span style="color:blue"&gt;set&lt;/span&gt;; }
            &lt;span style="color:blue"&gt;public&lt;/span&gt; RoleEditViewModel(RoleViewModel parent, Role role)
            {
                ManageObjectLifetime = &lt;span style="color:blue"&gt;false&lt;/span&gt;;
                Parent = parent;
                Model = role;
                
            }  
}

}


  &lt;span style="color:blue"&gt;public&lt;/span&gt; &lt;span style="color:blue"&gt;class&lt;/span&gt; EditViewModel&amp;lt;T&amp;gt; : Csla.Xaml.ViewModelBase&amp;lt;T&amp;gt;
{
   [Import]
        &lt;span style="color:blue"&gt;public&lt;/span&gt; IRegionManager RegionManager { &lt;span style="color:blue"&gt;get&lt;/span&gt;; &lt;span style="color:blue"&gt;set&lt;/span&gt;; }

        [Import]
        &lt;span style="color:blue"&gt;public&lt;/span&gt; IShellViewModel Shell { &lt;span style="color:blue"&gt;get&lt;/span&gt;; &lt;span style="color:blue"&gt;set&lt;/span&gt;; }

}

Run the code ,the RegionManager &amp; Shell  are &lt;span style="color:blue"&gt;null&lt;/span&gt;.

&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description><author>alokshriram</author><pubDate>Tue, 21 Feb 2012 08:41:12 GMT</pubDate><guid isPermaLink="false">New Post: Inside class inherit base class which can't import . 20120221084112A</guid></item><item><title>New Post: Inside class inherit base class which can't import .</title><link>http://mef.codeplex.com/discussions/334351</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;Public Class RoleViewModel
{

       &lt;span style="color:blue"&gt;public&lt;/span&gt; List&amp;lt;RoleEditViewModel&amp;gt; Role
        {
            &lt;span style="color:blue"&gt;get&lt;/span&gt;
            {
                &lt;span style="color:blue"&gt;if&lt;/span&gt; (Model == &lt;span style="color:blue"&gt;null&lt;/span&gt;)
                    &lt;span style="color:blue"&gt;return&lt;/span&gt; &lt;span style="color:blue"&gt;null&lt;/span&gt;;
                &lt;span style="color:blue"&gt;else&lt;/span&gt;
                    &lt;span style="color:blue"&gt;return&lt;/span&gt; &lt;span style="color:blue"&gt;new&lt;/span&gt; List&amp;lt;RoleEditViewModel&amp;gt; { &lt;span style="color:blue"&gt;new&lt;/span&gt; RoleEditViewModel(&lt;span style="color:blue"&gt;this&lt;/span&gt;, Model.Role) };
            }
        }

   &lt;span style="color:blue"&gt;public&lt;/span&gt; &lt;span style="color:blue"&gt;class&lt;/span&gt; RoleEditViewModel: EditViewModel&amp;lt;Role&amp;gt;
        {   
  &lt;span style="color:blue"&gt;public&lt;/span&gt; RoleViewModel Parent { &lt;span style="color:blue"&gt;get&lt;/span&gt;; &lt;span style="color:blue"&gt;private&lt;/span&gt; &lt;span style="color:blue"&gt;set&lt;/span&gt;; }
            &lt;span style="color:blue"&gt;public&lt;/span&gt; RoleEditViewModel(RoleViewModel parent, Role role)
            {
                ManageObjectLifetime = &lt;span style="color:blue"&gt;false&lt;/span&gt;;
                Parent = parent;
                Model = role;
                
            }  
}

}


  &lt;span style="color:blue"&gt;public&lt;/span&gt; &lt;span style="color:blue"&gt;class&lt;/span&gt; EditViewModel&amp;lt;T&amp;gt; : Csla.Xaml.ViewModelBase&amp;lt;T&amp;gt;
{
   [Import]
        &lt;span style="color:blue"&gt;public&lt;/span&gt; IRegionManager RegionManager { &lt;span style="color:blue"&gt;get&lt;/span&gt;; &lt;span style="color:blue"&gt;set&lt;/span&gt;; }

        [Import]
        &lt;span style="color:blue"&gt;public&lt;/span&gt; IShellViewModel Shell { &lt;span style="color:blue"&gt;get&lt;/span&gt;; &lt;span style="color:blue"&gt;set&lt;/span&gt;; }

}

Run the code ,the RegionManager &amp;amp; Shell  are &lt;span style="color:blue"&gt;null&lt;/span&gt;.

&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;</description><author>Cuiqs</author><pubDate>Tue, 21 Feb 2012 05:08:46 GMT</pubDate><guid isPermaLink="false">New Post: Inside class inherit base class which can't import . 20120221050846A</guid></item><item><title>New Post: MVC4</title><link>http://mef.codeplex.com/discussions/331211</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Yes, it will work. Please post details if you hit any issues.&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;
&lt;p&gt;Nick&lt;/p&gt;&lt;/div&gt;</description><author>nblumhardt</author><pubDate>Mon, 20 Feb 2012 16:27:27 GMT</pubDate><guid isPermaLink="false">New Post: MVC4 20120220042727P</guid></item><item><title>New Post: Mef2P4 MVC3 How to resolve</title><link>http://mef.codeplex.com/discussions/283077</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;This is part of the composition provider NuGet package, so we're likely to address this before MEF 3. Sorry about the wait - we're working on a status update for MEF and should get it onto the BCL Team&amp;nbsp;blog&amp;nbsp;in the next few weeks.&lt;/p&gt;
&lt;p&gt;Cheers!&lt;/p&gt;
&lt;p&gt;Nick&lt;/p&gt;&lt;/div&gt;</description><author>nblumhardt</author><pubDate>Mon, 20 Feb 2012 16:26:34 GMT</pubDate><guid isPermaLink="false">New Post: Mef2P4 MVC3 How to resolve 20120220042634P</guid></item><item><title>New Post: MVC4</title><link>http://mef.codeplex.com/discussions/331211</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;Will MEF2P5 work with the new MVC4 beta with simply adding a runtime assembly binding from 3.0.0.0 to 4.0.0.0?&lt;/p&gt;
&lt;/div&gt;</description><author>JaapM</author><pubDate>Mon, 20 Feb 2012 15:25:22 GMT</pubDate><guid isPermaLink="false">New Post: MVC4 20120220032522P</guid></item><item><title>New Post: Mef2P4 MVC3 How to resolve</title><link>http://mef.codeplex.com/discussions/283077</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Any idea if this will be fixed in MEF 2?&lt;/p&gt;
&lt;p&gt;Or will it be suspended to MEF 3?&lt;/p&gt;&lt;/div&gt;</description><author>JaapM</author><pubDate>Mon, 20 Feb 2012 15:17:50 GMT</pubDate><guid isPermaLink="false">New Post: Mef2P4 MVC3 How to resolve 20120220031750P</guid></item><item><title>New Comment on "Architecture"</title><link>http://mef.codeplex.com/wikipage?title=Architecture&amp;ANCHOR#C22600</link><description>Which tool did you used for creating the architecture figures&amp;#63; They are looking nice.</description><author>apo</author><pubDate>Fri, 17 Feb 2012 11:44:06 GMT</pubDate><guid isPermaLink="false">New Comment on "Architecture" 20120217114406A</guid></item><item><title>New Post: MEF in WPF application using MVVM Pattern,</title><link>http://mef.codeplex.com/discussions/321424</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;thanks, it look good but it is too complex.&lt;/p&gt;&lt;/div&gt;</description><author>fhnaseer</author><pubDate>Fri, 17 Feb 2012 07:18:44 GMT</pubDate><guid isPermaLink="false">New Post: MEF in WPF application using MVVM Pattern, 20120217071844A</guid></item><item><title>New Post: MEF in WPF application using MVVM Pattern,</title><link>http://mef.codeplex.com/discussions/321424</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;This one looks very interesting:&amp;nbsp;&lt;a href="http://www.codeproject.com/Articles/43625/Building-an-Extensible-Application-with-MEF-WPF-an"&gt;http://www.codeproject.com/Articles/43625/Building-an-Extensible-Application-with-MEF-WPF-an&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ido&lt;/p&gt;&lt;/div&gt;</description><author>ido_ran</author><pubDate>Fri, 17 Feb 2012 07:03:10 GMT</pubDate><guid isPermaLink="false">New Post: MEF in WPF application using MVVM Pattern, 20120217070310A</guid></item><item><title>New Post: MEF in WPF application using MVVM Pattern,</title><link>http://mef.codeplex.com/discussions/321424</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;I am looking for a WPF application following MVVM pattern and using MEF. I have looked on the samples. Meflook is a wpf application but doesnot follow MVVM pattern.&lt;/p&gt;
&lt;/div&gt;</description><author>fhnaseer</author><pubDate>Fri, 17 Feb 2012 06:59:47 GMT</pubDate><guid isPermaLink="false">New Post: MEF in WPF application using MVVM Pattern, 20120217065947A</guid></item><item><title>New Post: TypeLoadException ImportSource</title><link>http://mef.codeplex.com/discussions/313949</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;I was missing register the dlls into the GAC!!&lt;/p&gt;&lt;/div&gt;</description><author>Torremolinos</author><pubDate>Tue, 14 Feb 2012 21:14:25 GMT</pubDate><guid isPermaLink="false">New Post: TypeLoadException ImportSource 20120214091425P</guid></item></channel></rss>
