Я думаю, что вы ожидаете, это что-то вроде:
public interface INotifier
{
void Notify(string message);
}
[Export(typeof(INotifier))]
public class Notifier : INotifier
{
[ImportMany]
public IEnumerable<IMessageSender> Senders { get; set; }
public void Notify(string message)
{
foreach (var sender in Senders)
sender.Send(message);
}
}
Таким образом, вы можете [Import]
экземпляр INotifier
:
[Import]
public INotifier Notifier { get; set; }
Хотя, я делаюпредпочитайте инжектор конструктора, так как он лучше выражает зависимости для вашего класса:
[Export(typeof(INotifier))]
public class Notifier : INotifier
{
private readonly IEnumerable<IMessageSender> _senders;
[ImportingConstructor]
public Notifier(IEnumerable<IMessageSender> senders)
{
_senders = senders;
}
public void Notify(string message)
{
foreach (var sender in _senders)
sender.Send(message);
}
}