|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Доброго дня, знатоки! Потратил немало времени на поиск ответа, но таки не нашёл решения. Очень прошу помочь вас! Ситуация следующая: Есть Dll, В ней форма Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Есть второй проект: простая форма с кнопкой. По клику на которую: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Как я могу получить доступ к полям filed1..3 класса Form1? Как при создании Form1 в неё передать, например, строку подключения? Суть в том, что Dllки будут подключаться по ходу выполнения программы, т.е. заранее я не могу добавить референс на неё. Само собой у всех Dll имена параметров и методов будут одинаковые. Приветствуется указания "тегов" чего гуглить и учить. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2014, 15:05 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Везде все добавляют референс. А у меня так не получается. Вот и не могу найти информацию как делать это динамически. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2014, 15:37 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Алексей Ку., наводящий вопрос, Вы знаете что такое Интерфейсы, Атрибуты, ну на худой конец рефлексия? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2014, 15:45 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Интерефейсы да, Аттрибуты и Рефлексия нет. Я правильно понял что нужно начать с создания интерфейма для всех DLl? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2014, 15:49 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2014, 16:12 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
pation, После беглого просмотря стало ясно что мне всё равно нужно начать с аттрибутов и рефлексии ) Ну что ж. Да поможет мне Троелсен ) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2014, 17:18 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Для тех работает над подобной проблемой: У Троелсена в книге C# 5.0, то что мне надо называется позднее связывание. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2014, 20:41 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Алексей Ку.У Троелсена в книге C# 5.0, то что мне надо называется позднее связывание. не лучшее решение ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2014, 20:43 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Изопропил, Посоветуете чтото другое? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2014, 22:59 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Алексей Ку.Я правильно понял что нужно начать с создания интерфейма для всех DLl? правильно ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2014, 23:02 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Изопропил, Тогда почему позднее связывание плохое решение? Я так понял надо Dll создвать на основе какого-то интерфейса, но подключаются они всё равно при помощи позднего связывания. Или я не так чтото понял? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2014, 23:30 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Алексей Ку., вы подключаете длл, вам про нее не известно ничего, что в ней лежит и как, что бы исследовать ее вам нужна рефлексия ваш код что вы привели - улыбнуло.. что бы еще более плодотворно работать, не заостряя внимание на реализации типов, вам понадобится что то общее - интерфейсы предположу что будут лежать в другой длл ( если они кастомные) или задействовать из тех что имеет net, для быстрого поиска и маркировки элементов можно применить атрибуты, ну тут длл посредника для них желательно, ими можно маркировать хоть что, можно в подключаемой длл замаркировать сборку атрибутом с указанием типа формы на вызов, а после подключения проверить наличие атрибута и если есть прямо из атрибута вызвать экземпляр формы, диапазон эквилибристики безграничен... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2014, 23:50 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Не могу пока осознать всего что вы написали по поводу посредника и т.д. У меня получается вот такая штука Ещё раз повторю задачу на всякий случай: С главным ЕХЕ может лежать произвольное кол-во ДЛЛ. При загрузке ЕХЕ собирает список этих ДЛЛ и по кнопке загружает выбранную. Каждая ДЛЛ должна отрисовывать свою форму+на главной форме (которая вызывает ДЛЛ) менять некоторые контролы. На данный момент я делаю вот так: Сделал интерфейс и аттрибут к нему: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Вот так реализует его сама форма: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44.
Ну и запускаю вот так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Само собой это пока тестово-тренировочный вариант. Вопросы: - Я правильно иду? Что надо менять? - Как выбрать из корневой папки все ДЛЛ с аттрибутом [ReportDll]? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2014, 00:25 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Алексей Ку., идете прально но усложним задачу Type mytype = testAssembly.GetType("ClassLibrary1.Form1"); мы не знаем названий типов и как они лежат ~ ClassLibrary1.Form1 покажу один трюк нам понадобится сборка доступная всем сборкам которые оперируют в системе там будем держать атрибуты для сборок и интерфейсы Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
тут в общем атрибут для подписывания сборки, который содержит тип который нам надо вызывать из атрибута. ну коль у вас формы с конструктором параметризованным, добавил перегрузку теперь как пользоваться им. Берем длл с формой которую нам надо вызывать, и рефрендим к ней сборку с атрибутом ну и сама сборка Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
я ее подписал атрибутом, и назначил тип для вызова ну и сам вызов Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
то что я показал - что бы мозги жирком не затягивало, а так то вариантов вызова - ну очень хватает... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2014, 01:22 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Алексей Ку., задача учебная или боевая? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2014, 11:04 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Изопропил, Вообще боевая. Но для меня и учебная. Учитывая что сроки горят - делаю без промежуточной сборки дабы не усложнять. Тем более проект достаточно внутренний и поддержки чего-то от стороннего производителя не потребуется. Главное общий вектор определён! А то этого я вообще не знал с какой стороны подходить к задаче ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2014, 21:47 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Подскажите ещё, пожалуйста, решение вот какой задачи: Вот я из ДЛЛ открываю форму. Всё хорошо, но мне надо чтобы она вписала с контроль (к примеру панель) вызывающего приложения. Как это лучше реализовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2014, 22:38 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
КОрректриовка вопроса: Правильнее чтобы это делала родительская форма (та которая вызывает ДЛЛ) или в ДЛЛ передать контрол и как-то его вписывать в него. Есто второй вариант, то как? Первый я реализовал. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2014, 22:56 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Алексей Ку., События? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2014, 06:41 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Алексей Ку.КОрректриовка вопроса: Правильнее чтобы это делала родительская форма (та которая вызывает ДЛЛ) или в ДЛЛ передать контрол и как-то его вписывать в него. Есто второй вариант, то как? Первый я реализовал. в плагин передай контрол(контейнер), в плагине добавляй содержимое ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2014, 09:21 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Изопропил, А если плагин может отрисовываться на любом контроле (к примеру перекрыть собой грид)? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2014, 10:37 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Alex KuznetsovАлексей Ку., События? Например? Не очень понял как сюда привязать события. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2014, 10:39 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Алексей Ку.Изопропил, А если плагин может отрисовываться на любом контроле (к примеру перекрыть собой грид)? вопрос то в чём? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2014, 10:41 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Изопропил, Ну грид ведь не может быть контейнером для кнопок? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2014, 10:46 |
|
Запуск dll с параметром и обращение к её компонентам
|
|||
---|---|---|---|
#18+
Алексей Ку.Alex KuznetsovАлексей Ку., События? Например? Не очень понял как сюда привязать события.Да, это я не поняв вопроса предположил, что нужно передать данные из плагина в какой-то контрол контейнера... IMHO, плагинная архитектура не предполагает передачу компонентов в плагин, иначе это нонсенс какой-то получается. Вы бы хоть в общих чертах обрисовали (ну или схематично нарисовали) то что собираетесь делать. Понятно, что собираетесь делать плагинные формочки и их куда-то вставлять. А зачем в них помещать ещё какие-то контролы с формы контейнера? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2014, 11:09 |
|
|
start [/forum/topic.php?fid=20&msg=38623878&tid=1402987]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 168ms |
0 / 0 |