Использование MEF в редакторе - PullRequest
0 голосов
/ 14 декабря 2010

Я пытаюсь разработать редактор, такой как VS editor, где у меня есть такие компоненты, как FTP, TelNet (где вы перетаскиваете дизайнер и соединяете их друг с другом, изменяете свойства в PropertyGrid и т. Д.), А затем выполняете. Хорошая идея - использовать MEF для сканирования всех dll-ов, которые имеют интерфейс IComponent, а затем использовать отражение, чтобы получить исходный объект из dll-ов. Пример

[Export(typeof(ICOmponent))]
[MetadataExport("Name", "FTP")]
public class FTP : ICOmponent
{
    public string Server { get; set; }
    public void Start()
    {
        ....ConectTOServer(Server);
    }
}
[Export(typeof(ICOmponent))]
[MetadataExport("Name", "MessageBox")]
public class MessageBox : ICOmponent
{
    public string Message { get; set; }
    public void Start()
    {
        System.Windows.Forms.MessageBox.Show(Message);
    }
}

public interface ICOmponent
{
    void Start();
}

Или это другой способ получить исходный объект из MEF из ICOmponent, как из метаданных ... потому что PropertyGrid не нужен реальный объект для отображения свойств для FTP-сервера и сообщения MessageBox. Извините за мой плохой английский.

Ответы [ 2 ]

1 голос
/ 14 декабря 2010

Ваше письмо о MEF выглядит достаточно общим, чтобы этот сериал видео от Майка Таулти из Microsoft мог бы помочь: " Изучение MEF в SL4 от Майка Таулти "; просмотр этого сериала не станет пустой тратой времени.

Вы можете предпочесть чтение о MEF.

0 голосов
/ 14 декабря 2010

Чтобы MEF работал, любая сборка / dll, добавленная в ваше приложение, должна реализовывать Exports. Если этого не произойдет, вы не сможете Import ничего.

Для работы со сборкой / dll, которая не имеет экспорта, используйте отражение для поиска типов, реализующих IComponent. И используйте Activator класс для создания экземпляров из информации о их типах.

...