Why does GetExportedValues<T>() no longer work after using the .net 4 final version of MEF?

Posted by BigJason on Stack Overflow See other posts from Stack Overflow or by BigJason
Published on 2010-04-22T00:02:33Z Indexed on 2010/04/22 0:03 UTC
Read the original article Hit count: 176

Filed under:
|
|
|

I have been developing a managed extensibility framework application for the last several months using the community preview. I have been using the GetExportedValues() method and the PartCreationPolicy(CreationPolicy.NonShared) to fake a class factory (since only the silverlight version supports a factory). This was working great until I upgraded the project to use .net 4.0. There is no error, it just doesn't work.

So why did this code stop working? The code follows:

The factory method:

public static IEnumerable<DataActionBase> GetActionsFromDirectory(string PluginsFolder)
{
    IEnumerable<DataActionBase> result = null;

    var catalog = new DirectoryCatalog(PluginsFolder);
    var container = new CompositionContainer(catalog: catalog);

    result = container.GetExportedValues<DataActionBase>();

    return result;
}

Example Export Class:

[Export(typeof(DataActionBase))]
[PartCreationPolicy(CreationPolicy.NonShared)]
public class AnAction : DataActionBase
{
    ....
}

© Stack Overflow or respective owner

Related posts about .NET

Related posts about c#