netcore net mvc injection framework dependency asp .net dependency-injection

.net - net - ¿Por qué exactamente no es MEF un contenedor DI/IoC?



mvc dependency injection (2)

Se ha dicho en la blogósfera y por los mismos Microsoft que MEF no es otro contenedor IoC.

¿Está bien, pero por qué? Me parece lo mismo. Tal vez no sea tan bueno como Unity o Castle Windsor , pero todavía se ajusta a la definición, ¿no?

¿Por qué MEF no es un contenedor de IoC como Unity o Castle Windsor?


En mi mundo, DI se basa en tres dimensiones, composición de objetos, gestión de vida e intercepción. Esto es lo que facilita otros contenedores DI completos, como Unity, Castle Windsor y Ninject. MEF solo admite una dimensión, Composición del objeto. Está haciendo esto bastante bien, pero las dos dimensiones restantes no son compatibles con MEF.


MEF tiene potencial , pero como contenedor DI, carece de:

  1. Código como configuración
  2. Registro automático
  3. Configuración XML (no tan importante para mí)
  4. Tiempos de vida personalizados
  5. Interceptación

Esas cosas son bastante importantes.

Para el estilo de vida le falta:

  1. Por gráfico
  2. Contexto de solicitud web
  3. Contexto del hilo
  4. Contexto de la sesión
  5. Agrupado
  6. Alcance
  7. Referencia personalizada

Referencias: - El libro de Mark Seemann "Dependency Injection in .NET"