2010-12-14 4 views
0

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

[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 сообщения. Извините за мой плохой английский.

+0

Выглядит хорошо. Но в чем вопрос? Есть ли какая-то часть, которую вы не знаете, как ее реализовать? Была ли проблема с тем, как свойствоgrid показывает объекты? Еще одна проблема? –

ответ

1

Ваше письмо кажется достаточно общим о MEF, что эта видео-серия от Microsoft Майк Тауто может помочь: «Learning about MEF in SL4 from Mike Taulty»; смотреть эту серию не будет пустой тратой времени.

Вы можете выбрать reading о MEF.

0

Для работы MEF для работы любая сборка/dll, которая удалена на вас, должна быть выполнена Exports. Если это не так, вы не сможете сделать Import.

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

+0

Но, как вы видите, я нахожусь для всех моих компонентов. Экспорт hawe также в основном окне. Я могу импортировать для всех ICOmponents проблему с MEF, как я могу получить реальный пример объекта FTP из экспортированного ICOmponent, который я получаю от композиции. –

Смежные вопросы