Как MEF определяет порядок его импорта?
MEF позволяет импортировать несколько деталей с помощьюImportMany
приписывать. Как он определяет порядок, в котором он получает соответствующие экспорты и добавляет их в перечисляемый вами список? Например, как мне импортировать несколько IRules, которые должны были запускаться в определенном порядке? Единственный способ, о котором я могу подумать, - это иметь свойство OrderValue в IRule и сортировать вручную:
public class Engine
{
[ImportMany]
public IEnumerable 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();
}
}
}