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<ComposablePartCatalog>()));       
        var batch = new CompositionBatch();        
        batch.AddExportedValue<IWindowManager>(new WindowManager());  
        batch.AddExportedValue<IEventAggregator>(new EventAggregator());  
        batch.AddExportedValue(container);        
        container.Compose(batch);  
 }  
正如所讨论的,MEF 并不是为了成为 IoC 容器而构建的。然而,它有很多相似之处。如果 MEF 提供的功能足以满足您的 IoC 容器需求,那么您可以继续将其用作 IoC 容器。
虽然 MEF 可能永远无法满足每个人的 IoC 容器需求,但在下一个版本中,我们正在进行更改,我认为这将使其值得更多人使用它作为 IoC 容器。这里是其中的一些:
托马斯提到拦截是一个重要特征。我们目前没有计划提供对此开箱即用的支持。 我相信MefContrib确实以 InterceptingCatalog 的形式对此提供了一些支持。
| 归档时间: | 
 | 
| 查看次数: | 571 次 | 
| 最近记录: |