MEF consente di importare più parti tramite l'uso dell'attributo ImportMany
. Come determina l'ordine in cui recupera le esportazioni rilevanti e le aggiunge all'enumerabile che si sta compilando? Ad esempio, come importerei più IRules che dovevano sparare in un ordine particolare? L'unico modo che mi viene in mente è quello di avere una proprietà OrderValue in iRule e ordinare manualmente:In che modo MEF determina l'ordine delle sue importazioni?
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();
}
}
}
Credo che la vostra ipotesi è corretta - sembra un po 'al di fuori del problema MEF è destinato a risolvere. – GraemeF