2012-01-16 8 views
6

Tengo un archivo DLL que proporciona un punto de entrada a una aplicación ASP.MVC. Llamemos a este Primary.DLL. En Primary.DLL, hay contexto de datos LINQ-to-SQL y otras clases definidas. En algún lugar en Application_Start(), Assembly.Load() se llama para cargar Secondary.DLL. El secundario NO se referencia en el archivo de proyecto de Primary.DLL. Pero Primary se referencia en el archivo de proyecto de Secondary.DLL porque el contexto de datos LINQ-to-SQL y otras clases mencionadas anteriormente se utilizan en Secundaria.Dependencias de DLL circular en .NET

¿Esto crearía un problema de dependencia circular? ¿Habría algún problema con este tipo de diseño?

+1

¿Estás jugando con un problema específico? –

+0

A propósito, dado que las dependencias circulares funcionan si de alguna manera engañas al compilador para que las genere, esto no puede ser un problema. – Joshua

Respuesta

1

Hacemos esto todo el tiempo con archivos DLL de personalización específicos del cliente. Usamos la misma funcionalidad en aplicaciones web, servicios y equipos de escritorio.

Las DLL de cliente hacen referencia a las DLL de proyecto base para que puedan heredar de varias clases e implementar interfaces. Para hacerlo, deben tener una referencia al dll base.

En el inicio de la aplicación (global.asax Application_Start o la rutina de inicialización de un exe), cargamos cualquier DLL de personalización descubierta a través de Assembly.Load y definitivamente no crea una referencia cruzada.

+0

Esta es la personalización exacta que estoy tratando de hacer. Las clases e interfaces "contractuales" están bien definidas, pero la implementación variará año tras año. Las DLL futuras se descubren en tiempo de ejecución, pero para compilarlas, deben hacer referencia a algunas clases e interfaces definidas en la DLL base. –

1

Los ensamblajes no se vuelven a cargar en un Dominio de aplicación, y solo está cargando Secondary.dll dentro de Application_Start, por lo que esto no debería causar ningún problema y tampoco daría lugar a una manifestación de una dependencia circular.

1

No creará un problema de dependencia circular, pero puede que no sea un gran diseño. Las dependencias circulares requieren una referencia real entre dos o más proyectos.

Cuestiones relacionadas