MEF umożliwia importowanie wielu części za pomocą atrybutu ImportMany
. W jaki sposób określa kolejność, w jakiej pobiera odpowiednie eksporty i dodaje je do pola przeliczalnego, które wypełniasz? Na przykład, w jaki sposób mogę zaimportować wiele IRI, które musiały wystrzelić w określonej kolejności? Jedynym sposobem mogę myśleć jest posiadanie własności OrderValue w IRule i sortować ręcznie:W jaki sposób MEF określa kolejność importu?
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();
}
}
}
Myślę, że założenie jest poprawne - wydaje się trochę poza problemu MEF jest przeznaczona do rozwiązania. – GraemeF