2011-09-30 16 views
10

Estoy tratando de usar MEF en Windows 8.Conseguir una Asamblea Type en Windows 8

Con el fin de construir mi AssemblyCatalog para el contenedor, necesito una referencia al ensamblado. En el pasado, yo habría hecho esto simplemente:

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

Misteriosamente, la propiedad Assembly ya no existe en el objeto Type. ¿Alguien sabe de un buen trabajo? ¿Hay alguna otra manera de obtener el montaje? Podría cargarlo usando Assembly.Load, pero necesitaría el nombre del ensamblado. No puedo entender eso del tipo tampoco.

¿Está usando una alternativa DirectoryCatalog? No me gusta la idea, pero haré lo que necesito.

+0

@harold: Gracias por aclarar. –

Respuesta

16
using System.Reflection; 

Uso type.GetTypeInfo().Assembly lugar.

+0

Vea también http://stackoverflow.com/questions/7467678/list-of-assemblies-in-the-net-for-windows-8-profile –

+1

Intellisense no está recogiendo GetTypeInfo() en typeof (Aplicación). No estoy seguro de cuál es el trato ahora. –

+2

La cita de la documentación lo aclara: "Puede recuperar el objeto TypeInfo llamando al método System.Reflection.IntrospectionExtensions.GetTypeInfo (System.Type), que es un método de extensión para Type". –

6

Encontré la respuesta después de buscar en la gran cantidad de documentación sobre la construcción de aplicaciones de estilo metro.

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

Los aspectos de reflexión de la clase Type se han trasladado a un nuevo objeto llamado System.Reflection.TypeInfo. Puede obtener una instancia de esta clase llamando al type.GetTypeInfo().

Para obtener la Asamblea: typeof(App).GetTypeInfo().Assembly.

Requiere using System.Reflection;