O Managed Extensibility Framework (MEF) é uma nova biblioteca no. NET Framework que permite uma maior reutilização de aplicações e componentes. Usando MEF, aplicações . NET podem fazer deixar de serem estaticamente compiladas para serem dinamicamente compostas.

Abaixo vemos uma pequena amostra de código com o novo framework, representado pelos atributos que decoram a classe SimpleMortgageCalculator.

[Export(typeof(IMortgageCalculator))]
[ExportMetadata(“Calculation”, “Simple”)]
[ExportMetadata(“Tax Aware”, null)]
public class SimpleMortgageCalculator : IMortgageCalculator
{
    public ILogger Logger { get; set; }

    public float Calculate()
    {
        Logger.Log("Calculating Mortgage");

        return ...;
    }
}

blocksO MEF permite ser utilizado num servidor web onde você pode utilizar uma parte isolada de outras instâncias da mesma aplicação. Basicamente, a idéia é simplificar o design e construção de aplicações e componentes com alta extensibilidade.

O MEF está disponível no CodePlex aqui.