2010-06-01 38 views
9

No encuentro ninguna buena documentación sobre el concepto de cargador de clases en .NET Framework? ¿Qué es? ¿Dónde se puede encontrar? ¿Alguien sabe?.NET Class Loader - ¿Qué es?

+1

¿Por qué supone que existe algo así como un cargador de clases en .NET? –

+1

Alguien me hizo esta pregunta y nunca la había visto. Sé que el concepto existe en Java y me preguntaba si había un equivalente en .NET. – user118190

Respuesta

13

En .NET, los ensamblajes son la unidad fundamental de implementación. La tecnología que realmente carga los ensamblajes se llama Fusion. Para más detalles sobre eso lea el .NET Fusion Workshop. Cada ensamblaje tiene su propio cargador de clases para cargar tipos de ese ensamblaje.

Hosting the Common Language Runtime también pueden ser de su interés.

No creo que Class Loader en .NET tenga la misma importancia o poder que en Java. La carga de la clase correrá a cargo del cargador de clases de la asamblea.

La carga dinámica por lo general se llevaría a cabo mediante la carga de la asamblea y luego crear instancias de la clase:

Assembly assembly = Assembly.LoadFrom("assemblyName"); 
Type type = assembly.GetType("className"); 
object x = Activator.CreateInstance(type); 
+0

Gracias por la información útil. – user118190

2

¿Qué quieres decir? ¿Un concepto similar al de los cargadores de clase Java? En .Net, el concepto está asignado a AppDomain (solo busca AppDomain)

+0

Sí, estoy buscando el equivalente a los cargadores de clase Java. Entonces, ¿debo buscar AppDomain y leer en él? – user118190

+0

** AFAIK **, son conceptos equivalentes, es decir, ambos se utilizan como límite de seguridad, los tipos cargados en un dominio de Cargador de Clase/Aplicación no pueden (en general) ser utilizados por objetos en otros dominios de Cargador de Clase/Aplicación, etc. ¿Qué estás tratando de lograr exactamente? –

+2

No estoy familiarizado con las partes internas de Java, pero Java Class Loader y .NET AppDomain me parecen diferentes. De Wikipedia: "Java Classloader es una parte del Java Runtime Environment que carga dinámicamente clases Java en la Máquina Virtual Java". y "En Common Language Runtime, un dominio de aplicación es un mecanismo (similar a un proceso en un sistema operativo) utilizado para aislar aplicaciones de software ejecutadas entre sí para que no se afecten entre sí". ¿No sería el equivalente de un AppDomain una instancia de JVM? –

4

Randy Levy no respondieron todos. El cargador de clases hizo más trabajos que Assembly.LoadFrom. Porque no hay un método como 'Assembly.Unload'. Los ensamblajes solo pueden descargarse cerrando appdomain. El cargador de clases de Java puede hacer mucho más que la respuesta de Randy Levy. Aquí marque una mejor respuesta en stackoverflow Equivalent of Class Loaders in .NET

Cuestiones relacionadas