MEF isnot anIoCcontainer. Pero parece que es casi un contenedor IoC. Parece que puedo hacer que MEF se comporte fácilmente como un contenedor de IoC (ver el ejemplo a continuación) y no falta mucho para hacer de MEF un contenedor IoC completo.¿Qué falta en MEF para estar a la par con los contenedores de IoC?
¿Cuáles son las características reales que faltan en MEF que StrucureMap, Unity, etc. tienen que ponerse a la par?
¿Pensarías que this feaure request tiene sentido?
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using System.ComponentModel.Composition.Primitives;
using System.Linq;
...
private CompositionContainer container;
public void Configure()
{
container = CompositionHost.Initialize(
new AggregateCatalog(
AssemblySource.Instance.Select(
x => new AssemblyCatalog(x)).OfType<ComposablePartCatalog>()));
var batch = new CompositionBatch();
batch.AddExportedValue<IWindowManager>(new WindowManager());
batch.AddExportedValue<IEventAggregator>(new EventAggregator());
batch.AddExportedValue(container);
container.Compose(batch);
}
Probablemente le alegra escuchar que en MEF vNext, hay una forma de desactivar el rechazo para que arroje una excepción en cualquier momento en que una parte sea rechazada. Esto debería facilitar la búsqueda del problema en sistemas en los que no se espera que se rechace nada. –
@Daniel: Gracias, eché un vistazo al lanzamiento de MEF 2 Preview 3 pero de alguna manera me lo perdí. –