MEF - это не контейнер IoC . Но кажется, что это почти контейнер IoC. Кажется, что я могу легко заставить MEF вести себя как контейнер IoC (см. Пример ниже), и не так много упущений, чтобы сделать MEF полноценным контейнером IoC.
Какие фактически отсутствующие в MEF функции, которые StrucureMap, Unity и т. Д. Должны быть на одном уровне?
Как вы думаете, этот запрос функции имеет смысл?
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()));
var batch = new CompositionBatch();
batch.AddExportedValue(new WindowManager());
batch.AddExportedValue(new EventAggregator());
batch.AddExportedValue(container);
container.Compose(batch);
}