Cómo acceder a la clase interna usando Reflection

¿Cómo puedo acceder a una clase interna de un ensamblado? Digamos que quiero acceder a System.ComponentModel.Design.DesignerHost. Aquí el DesignerHost es una clase interna y sellada.

¿Cómo puedo escribir un código para cargar el ensamblaje y el tipo ?.

En general, no debe hacer esto: si un tipo se ha marcado como interno, significa que no está destinado a usarlo desde fuera del ensamblaje. Se podría eliminar, cambiar, etc. en una versión posterior.

Sin embargo, la reflexión le permite acceder a tipos y miembros que no son públicos, solo busque sobrecargas que toman un argumento BindingFlags e incluya BindingFlags.NonPublic en los indicadores que pase.

Si tiene el nombre completamente calificado del tipo (incluida la información del ensamblado), simplemente debe llamar a Type.GetType(string) . Si conoce el ensamblado por adelantado y conoce un tipo público dentro de ese ensamblado, entonces usar typeof(TheOtherType).Assembly para obtener la referencia de ensamblado generalmente es más simple, entonces puede llamar a Assembly.GetType(string) .

Para cargar el ensamblaje y escribirlo en su ejemplo:

 Assembly design = Assembly.LoadFile(@"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Design.dll"); Type designHost = design.GetType("System.ComponentModel.Design.DesignerHost");