MEF GetExports <T, TMetaDataView> no devuelve nada con AllowMultiple = True

No entiendo muy bien a MEF, así que espero que esta sea una solución simple de cómo creo que funciona.

Estoy tratando de usar MEF para obtener información sobre una clase y cómo debe usarse. Estoy usando las opciones de Metadatos para tratar de lograr esto. Mis interfaces y atributos se ven así:

public interface IMyInterface
{
}

public interface IMyInterfaceInfo
{
    Type SomeProperty1 { get; }
    double SomeProperty2 { get; }
    string SomeProperty3 { get; }
}

[MetadataAttribute]
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
public class ExportMyInterfaceAttribute : ExportAttribute, IMyInterfaceInfo
{
    public ExportMyInterfaceAttribute(Type someProperty1, double someProperty2, string someProperty3)
        : base(typeof(IMyInterface))
    {
        SomeProperty1 = someProperty1;
        SomeProperty2 = someProperty2;
        SomeProperty3 = someProperty3;
    }

    public Type SomeProperty1 { get; set; }
    public double SomeProperty2 { get; set; }
    public string SomeProperty3 { get; set; }
}

La clase que está decorada con el atributo se ve así:

[ExportMyInterface(typeof(string), 0.1, "whoo data!")]
[ExportMyInterface(typeof(int), 0.4, "asdfasdf!!")]
public class DecoratedClass : IMyInterface
{
}

El método que está tratando de usar la importación se ve así:

private void SomeFunction()
{
    // CompositionContainer is an instance of CompositionContainer
    var myExports = CompositionContainer.GetExports<IMyInterface, IMyInterfaceInfo>();
}

En mi casomyExports siempre está vacío. En mi CompositionContainer, tengo una parte en mi catálogo que tiene dosExportDefinitions, ambos con los siguientesContractName: "MyNamespace.IMyInterface". losMetadata También se carga correctamente por mis exportaciones.

Si quito elAllowMultiple y solo incluye un atributo exportado, elmyExports La variable ahora tiene la exportación única con sus metadatos cargados.

¿Qué estoy haciendo mal?

EDITAR: Si utilizo metadatos de tipo débil, mi exportación queda repentinamente satisfecha:

var myExports = CompositionContainer.GetExports<IMyInterface, IDictionary<string, object>>();

¿Alguna idea de por qué?

Respuestas a la pregunta(1)

Su respuesta a la pregunta