Использование TypeCatalog - PullRequest
       10

Использование TypeCatalog

2 голосов
/ 08 февраля 2012

Я думал, что это будет легко, но после сканирования многих страниц Google не пришел мне на помощь.

У меня есть следующее в методе теста.

var tCatalog = new TypeCatalog(typeof (ISystemIndex));
var aCatalog = new AssemblyCatalog(typeof (ISystemIndex).Assembly);

tCatalog.Parts появляется пусто, в то время как aCatalog.Parts.Count равно 3 (один из них принадлежит к классу, украшенному [Export(typeof(ISystemIndex))], два других - к классам, унаследованным от базы с определенным экспортом)

Что я делаю неправильно?Нужно ли каким-то образом инициализировать TypeCatalog?

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

Спасибозаранее.

1 Ответ

4 голосов
/ 08 февраля 2012

Вы пытаетесь создать TypeCatalog для определения интерфейса, которое не экспортируется, поскольку отсутствует атрибут [Export], украшающий интерфейс ISystemIndex.

Если у вас был такой класскак

[Export(typeof(ISystemIndex))]
public class MySystemIndex : ISystemIndex
{
}

, и вы бы создали каталог типов

var tCatalog = new TypeCatalog(typeof(MySystemIndex));

, тогда вы бы видели его в tCatalog.Parts.

РЕДАКТИРОВАТЬ

Если вы хотите, чтобы каталог был отфильтрован по определенным критериям (например, в вашем случае, только для экспорта), ознакомьтесь с документацией MEF о Фильтрация каталогов

...