Получение Type Assembly в Windows 8

Я пытаюсь использовать MEF в Windows 8.

Чтобы собрать AssemblyCatalog для контейнера, мне нужна ссылка на сборку. Раньше я бы сделал так:

var catalog = new AssemblyCatalog(typeof(App).Assembly);

Таинственным образом свойство Assembly больше не существует в объекте Type. Кто-нибудь знает хорошую работу вокруг? Есть ли другой способ получить сборку? Я мог бы загрузить его с помощью Assembly.Load, но мне нужно было бы имя сборки. Я тоже не могу получить это от типа.

Является ли использование DirectoryCatalog возможной альтернативой? Мне не нравится эта идея, но я сделаю то, что нужно.


person Josh G    schedule 30.09.2011    source источник
comment
@harold: Спасибо за разъяснение.   -  person Josh G    schedule 30.09.2011


Ответы (2)


using System.Reflection;

Вместо этого используйте type.GetTypeInfo().Assembly.

person Roman Boiko    schedule 30.09.2011
comment
См. также stackoverflow.com/questions/7467678/ - person Roman Boiko; 30.09.2011
comment
Intellisense не получает GetTypeInfo() для typeof(App). Не знаю, в чем дело сейчас. - person Josh G; 30.09.2011
comment
Цитата из документации проясняет ситуацию: вы можете получить объект TypeInfo, вызвав метод System.Reflection.IntrospectionExtensions.GetTypeInfo(System.Type), который является методом расширения для Type. - person Josh G; 30.09.2011
comment
Работает как шарм, когда я добавляю using System.Reflection;, чтобы я мог ссылаться на функцию расширения. - person Josh G; 30.09.2011
comment
На самом деле, вы нашли ответ раньше меня :) - person Roman Boiko; 30.09.2011
comment
Я использую System.Reflection и пробовал System.Reflection.IntrospectionExtensions.GetTypeInfo(System.Type), но не удается найти IntrospectionExtensions? - person Greg Quinn; 05.12.2013

Нашел ответ после некоторого изучения множества документации по созданию приложений в стиле метро.

http://msdn.microsoft.com/en-us/library/windows/apps/br230302%28v=VS.85%29.aspx#reflection

Аспекты отражения класса Type были перемещены в новый объект под названием System.Reflection.TypeInfo. Вы можете получить экземпляр этого класса, вызвав type.GetTypeInfo().

Итак, чтобы получить сборку: typeof(App).GetTypeInfo().Assembly.

Требуется using System.Reflection;

person Josh G    schedule 30.09.2011