Инкапсуляция компонентов C # GUI в DLL - PullRequest
1 голос
/ 17 мая 2011

Мне поручено разработать систему, состоящую из 1) графического интерфейса пользователя, который управляет связью с устройством, и 2) библиотек DLL, представляющих режимы, в которых устройство будет работать.

Каждый режим требует различных деталей конфигурации, поэтомуИдея состоит в том, чтобы каждая DLL содержала метод для создания панели, заполненной элементами управления, которую можно разместить в графическом интерфейсе.

Моя работа в C # до сих пор была немного менее сложной, и я не уверен, какреализовать этот вид функциональности.Мне не удалось найти помощь или примеры такого рода реализации.Может ли кто-нибудь указать мне правильное направление?

Ответы [ 2 ]

2 голосов
/ 17 мая 2011

Вам понадобится базовый dll с вашими интерфейсами и базовыми классами.Затем другие dll будут ссылаться на эту базовую dll и расширять / выводить / реализовывать эти базовые классы / интерфейсы.

Например, если у вас есть dll (Base.dll) с таким интерфейсом, как:

public interface CoolGui {
  void DrawGui(Graphics g); 
}

Тогда ваши два других dll (One.dll и Two.dll) будут ссылаться на Base.dll и реализовывать CoolGui в их интерфейсе.

РЕДАКТИРОВАТЬ:

И, конечно,нужно будет загружать в dll динамически и использовать отражение, чтобы получить правильные экземпляры вашего интерфейса / базового класса.Вот статья кода проекта, чтобы помочь: http://www.codeproject.com/KB/cs/DynLoadClassInvokeMethod.aspx

0 голосов
/ 17 мая 2011

Вы хотите иметь возможность динамически загружать библиотеки DLL?Проверьте Assembly.LoadFile .Оттуда вы можете использовать его члены и GetMember для загрузки статических членов из классов в DLL, все динамически.Я предлагаю вызвать метод, который возвратит общий интерфейс (на который ссылаются обе программы) или что-то еще, потому что без этого может быть сложно обойтись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...