Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
391 / 310 / 53
Регистрация: 14.08.2014
Сообщений: 1,010
1

IntelliSense при написании кода в dll

17.01.2019, 22:05. Просмотров 1838. Ответов 8
Метки нет (Все метки)

Всех приветствую!
Пишу dll.
Через конструктор, параметром, из программы в dll передается класс.
При написании кода в dll VS естественно ничего не знает про этот класс, поэтому через IntelliSense после точки не выводятся свойства класса, методы и процедуры, что очень неудобно. Приходится постоянно подглядывать в класс, чтобы посмотреть какие у него есть поля, методы и прочее.

Есть ли какие-то способы упростить написание кода в подобных случаях?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2019, 22:05
Ответы с готовыми решениями:

Есть ли возможность скрыть часть кода одним символом при написании кода?
Мне интересно есть ли возможность скрыть часть кода программы от его копирования(от конкурентов...

Предупреждения при написании кода.
На каждой строке типа: comand.Parameters.Add("@Assmnt_ID", Assmnt_ID); студия пишет...

Ошибка при написании кода
В общем ближе к делу, есть поект в нем 3 юнита, в третьем юните у меня объявлены глобальные...

При написании DLL можно ли тут же проверять выходные данные?
Здравствуйте я пишу DLL на С++ VS 2012. Вопрос такой. Возможно ли при написании кода проверять...

8
Супер-модератор
Эксперт .NET
12358 / 10199 / 4244
Регистрация: 17.03.2014
Сообщений: 20,424
Записей в блоге: 1
17.01.2019, 22:27 2
Дядя Корней, тут что-то не так. IntelliSense прекрасно работает в библиотеках. Какой тип параметра у конструктора?

P.S. Есть подозрение что здесь виновато позднее связывание VB. Но если так, то вины VS здесь нет.
0
391 / 310 / 53
Регистрация: 14.08.2014
Сообщений: 1,010
17.01.2019, 23:24  [ТС] 3
Цитата Сообщение от OwenGlendower Посмотреть сообщение
тут что-то не так.
Да скорее всего я не правильно что-то делаю. Не приходилось раньше особо с написанием библиотек работать, поэтому не знаю как это делается правильно.

Цитата Сообщение от OwenGlendower Посмотреть сообщение
Какой тип параметра у конструктора?
В dll передаю объект класса по ссылке.
Тип явно не указываю(As User), потому-что не знаю как это сделать, т.к. класс в dll ничего не знает о классе User в программе, стало быть и как As User его в dll не передать, поэтому передаю просто как Object.

Ниже скриншот, в нем наглядно показана суть проблемы.
IntelliSense при написании кода в dll
0
4362 / 3064 / 1321
Регистрация: 09.05.2015
Сообщений: 7,530
17.01.2019, 23:27 4
У вас тип передаваемого объекта неверно указан. Вы зачем-то указали Object, а хотите User...
По хорошему класс User нужно перенести в библиотеку, а в программу добавить ссылку на библиотеку. Тогда можно будет использовать класс User и в библиотеке, и в программе.
1
Супер-модератор
Эксперт .NET
12358 / 10199 / 4244
Регистрация: 17.03.2014
Сообщений: 20,424
Записей в блоге: 1
17.01.2019, 23:28 5
Цитата Сообщение от Дядя Корней Посмотреть сообщение
Тип явно не указываю(As User), потому-что не знаю как это сделать, т.к. класс в dll ничего не знает о классе User в программе, стало быть и как As User его в dll не передать, поэтому передаю просто как Object.
Поэтому IntelliSense ничего и не показывает. Откуда ему знать что это не Object, а User на самом деле? Ниоткуда. Нужно перенести объявление класса User в библиотеку и указать тип User в и конструкторе и у поля.
1
391 / 310 / 53
Регистрация: 14.08.2014
Сообщений: 1,010
18.01.2019, 00:04  [ТС] 6
Цитата Сообщение от Someone007 Посмотреть сообщение
Вы зачем-то указали Object, а хотите User...
Так и есть, указал, потому что, иначе не знаю как указать, о чем я и сказал выше:
Цитата Сообщение от Дядя Корней Посмотреть сообщение
т.к. класс в dll ничего не знает о классе User в программе, стало быть и как As User его в dll не передать, поэтому передаю просто как Object.
Цитата Сообщение от Someone007 Посмотреть сообщение
По хорошему класс User нужно перенести в библиотеку, а в программу добавить ссылку на библиотеку. Тогда можно будет использовать класс User и в библиотеке, и в программе.
Да вот в том-то и дело, что класс User нельзя переносить в dll.

Ладно ребзя, спасибо. Буду думать дальше, как быть.
Хотел для программы что-то типа плагинов сделать, чтобы с помощью dll можно было работать с классами, полями и методами, которые есть в программе. Например, написал две dll и в каждой из dll на выходе разная логика, при этом используются общие поля и методы из программы.

Скорее всего я что-то не правильно проектирую.
0
Супер-модератор
Эксперт .NET
12358 / 10199 / 4244
Регистрация: 17.03.2014
Сообщений: 20,424
Записей в блоге: 1
18.01.2019, 00:08 7
Лучший ответ Сообщение было отмечено Дядя Корней как решение

Решение

Дядя Корней, можно вынести общие типы нужные программе и плагинам в отдельную библиотеку. Это стандартное решение в подобной ситуации.
1
4362 / 3064 / 1321
Регистрация: 09.05.2015
Сообщений: 7,530
18.01.2019, 00:11 8
Лучший ответ Сообщение было отмечено Дядя Корней как решение

Решение

Цитата Сообщение от Дядя Корней Посмотреть сообщение
Да вот в том-то и дело, что класс User нельзя переносить в dll.
Можно и нужно.

Цитата Сообщение от Дядя Корней Посмотреть сообщение
Хотел для программы что-то типа плагинов сделать, чтобы с помощью dll можно было работать с классами, полями и методами, которые есть в программе. Например, написал две dll и в каждой из dll на выходе разная логика, при этом используются общие поля и методы из программы.
Так пишите, это примерно так и делается, только нужна еще третья DLL, в которой будут находиться классы, используемые как основной программой, так и плагинами. Основная программа и плагины будут иметь ссылку на это третью библиотеку.

Можно конечно извратиться и добавить ссылку на программу в плагины напрямую, минуя промежуточную библиотеку, но это не очень хорошо...
1
391 / 310 / 53
Регистрация: 14.08.2014
Сообщений: 1,010
18.01.2019, 09:30  [ТС] 9
OwenGlendower, Someone007, спасибо на направление в нужную сторону.
Именно так и сделаю. Вынесу классы из программы во вторую dll, а логику (плагины) сделаю в третьей, четвертой,... и т.д. dll'ке.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2019, 09:30

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Наставление при написании математического кода
При написании программ на С++ с использованием сложный длинных математический формул,действий, я...

Стираются пробелы при написании кода
Писал на vba макросы в модуле к файлу. В один прекрасный момент любое слово подсвечивается красным...

Сортировка подсказок при написании кода
Речь об этом: Возможно ли настроить их сортировку, например, по частоте использования? И как...

Выпадающие меню при написании кода
Всем привет. Народ подскажите пожалуйста, можно-ли как-нибудь сделать, чтобы при написании кода...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.