Wie bestimmt MEF die Reihenfolge seiner Importe?

Mit MEF können Sie mehrere Teile mithilfe von importierenImportMany Attribut. Wie wird die Reihenfolge bestimmt, in der die relevanten Exporte abgerufen und zu der von Ihnen angegebenen Aufzählung hinzugefügt werden? Wie würde ich beispielsweise mehrere IRules importieren, die in einer bestimmten Reihenfolge ausgelöst werden mussten? Ich kann mir nur vorstellen, eine OrderValue-Eigenschaft in IRule zu haben und manuell zu sortieren:

public class Engine
{
  [ImportMany]
  public IEnumerable<IRule> Rules { get; set; }

  public void Run()
  {
    // ...
    // Initialise MEF
    // ...

    //
    // Do I need to manually order Rules here?
    //

    foreach (IRule rule in Rules)
    {
      // Must execute in a specific order
      rule.Execute();
    }
  }
}

Antworten auf die Frage(3)

Ihre Antwort auf die Frage