¿Cuáles son las implicaciones y los escenarios sugeridos para usar?¿Utiliza Assembly.Load una referencia estática o referencia dinámica?
Respuesta
Assembly.Load
es una referencia dinámica ya que carga dinámicamente una DLL externa en tiempo de ejecución. Consideraría una referencia estática más parecida a cuando agrega una referencia a un proyecto .NET y crea el proyecto con esa referencia en su lugar.
EDIT:
Desde el Doc MSDN:
Los registros del compilador estática referencias en los metadatos del manifiesto de ensamblado en tiempo de construcción.
Hmmm, no estoy seguro de esto por mi cuenta. Voy a mantener mi respuesta aquí por ahora, con la esperanza de obtener más comentarios de corrección o ver mejores respuestas.
Una referencia dinámica como se indica en MSDN (http://msdn.microsoft.com/en-us/library/yx7xezcf(VS.71).aspx) hace referencia a las referencias dinámicas como cargar una referencia con solo la información suficiente para que el motor de ejecución busque el ensamblaje que se está cargando. Con referencias estáticas, la ubicación de los ensambles (GAC, direcotry de aplicación, etc.) es conocida y aún se puede lograr utilizando Assembly.load.
En referencia a:
¿Cuáles son las implicaciones y sugirió escenarios a utilizar?
Por lo general, si uso Assembly.Load()
, es porque estoy desarrollando un sistema conectable. Las referencias dinámicas facilitan la inclusión de ensamblajes que no son necesariamente parte de mi compilación.
Los tipos de creación de instancias de un ensamblaje cargado dinámicamente requieren al menos algo de reflexión. La cantidad de reflexión necesaria puede mitigarse asegurando que los tipos cargados dinámicamente implementen alguna interfaz conocida o clase base (desde un ensamblaje cargado estáticamente).
En resumen, es mucho trabajo utilizar conjuntos cargados dinámicamente; sin embargo, hacerlo puede hacer que una aplicación sea más flexible al permitir a los usuarios desarrollar complementos. Solo pondere las ventajas y desventajas de la flexibilidad anticipada de las referencias dinámicas (que pueden no ser un requisito), y el soporte en tiempo de diseño de Visual Studio para las referencias estáticas.
Una práctica que vale la pena considerar si la construcción de una arquitectura de plug-in es cargar ensamblajes en sus propios AppDomains. Hacerlo le permite tener un control más preciso sobre los permisos de seguridad de los ensamblados en los que puede que no confíe del todo, y proporciona el beneficio adicional de que los ensamblajes pueden descargarse en tiempo de ejecución. Personalmente, me pareció que trabajar con AppDomains requería mucha mano de obra; Sin embargo, si se requieren los beneficios, es bueno saber que los AppDomains están ahí.
- 1. Referencia "propia" (estática) Java
- 2. Referencia no definida a la cola estática
- 3. Acceder a una variable estática por $ var :: $ referencia
- 4. ¿Cómo obtener una referencia estática a una ventana de WPF?
- 5. C++ Referencia indefinida a la variable estática
- 6. Creación de una referencia estática frente a un conjunto unitario
- 7. "referencia indefinida" cuando se enlaza contra una biblioteca estática
- 8. referencia indefinida cuando se utiliza extern
- 9. Referencia no definida a una variable local estática
- 10. ¿El Java para cada ciclo devuelve una referencia, o una copia de referencia?
- 11. "const int estática" provoca error al vincular (undefined-referencia)
- 12. C++ DAL - Retorno de referencia o pueblan aprobada en referencia
- 13. contraer una enumeración o Propiedad estática de Genérico Tipo de referencia <T>
- 14. referencia o devolución: mejor práctica
- 15. Propiedades: por valor o referencia?
- 16. Referencia Web vs. Servicio Referencia
- 17. Detectando si una variable de PHP es una referencia/referencia
- 18. referencia dinámica a archivos de recursos en C#
- 19. Java - ¿Referencia o identificador del objeto?
- 20. Bitset Referencia
- 21. Referencia débil y Referencia fuerte
- 22. Agregar referencia agrega referencia incorrecta
- 23. Comportamiento de URL en una referencia web de Visual Studio
- 24. dinámica no contiene una definición de una propiedad de una referencia de proyecto
- 25. Pycharm + Django 1.3 + STATIC_URL en plantillas = Referencia estática no resuelta
- 26. Referencia no definida al miembro de la clase estática
- 27. Devolución de una referencia a una variable local o temporal
- 28. Tabla de referencia y tabla de referencia
- 29. Detecta si la dirección IP pública es dinámica o estática
- 30. Iniciar una referencia - C4355 advertencia: 'esto': se utiliza en lista de inicialización miembro de base
Esto no es del todo correcto, creo ... una referencia dyanamic como se indica en MSDN (http://msdn.microsoft.com/en-us/library/yx7xezcf (VS.71) .aspx) hace referencia a las referencias dinámicas como cargar una referencia con solo la información suficiente para que el tiempo de ejecución tenga que buscar el ensamblaje que se está cargando. Con referencias estáticas, la ubicación de los ensambles (GAC, direcotry de aplicación, etc.) es conocida y aún se puede lograr utilizando Assembly.load. – Achilles