Идентификация сборки составной части - PullRequest
1 голос
/ 25 февраля 2011

Предположим, я определил экспорт в AssemblyA:

[Export(typeof(Foo))]
public class Foo
{
    ...
}

Есть ли способ определить экспорт Foo из AssemblyA в CompositionContainer?

То, что я пытаюсь сделать, для любой данной сборки, которая обеспечивает экспорт MEF, она также должна включать один экспорт MEF определенного интерфейса. И я хочу иметь возможность пометить любые сборки, которые не удовлетворяют этому правилу.

Ответы [ 2 ]

2 голосов
/ 25 февраля 2011

Нет способа сделать это из CompositionContainer. Я бы предложил создать AssemblyCatalog для каждой сборки и проверить, имеет ли какая-либо из его частей ExportDefinition, соответствующую желаемому интерфейсу.

1 голос
/ 16 августа 2011

Вы можете определить тип и сборку ComposablePartDefinition , используя статический метод ReflectionModelServices.GetPartType .В следующем примере создается список отдельных сборок, которые содержат типы, включенные в каталог контейнера:

var assemblies = container.Catalog.Parts
    .Select(part => ReflectionModelServices.GetPartType(part).Value.Assembly)
    .Distinct()
    .ToList();
...