Стартовая страница › Форумы › Разработка и интеграция › Объявление переменных в KpLogic
- В этой теме 72 ответа, 3 участника, последнее обновление 8 лет, 1 месяц назад сделано
Mikhail.
-
АвторЗаписи
-
07.07.2018 в 15:26 #9893
MikhailМодераторЗдесь нужно мыслить в парадигме объектно-ориентированного программирования и всё встанет на свои места ))
чтобы Коммуникатор ограничивал блоки данных каждого вызова dll, особенно учитывая, что он может вызывать библиотеки несколько раз и в несколько потоков
Верно, Коммуникатор для каждого КП создаёт отдельный объект типа KpXXLogic, который Вы описываете в драйвере.
07.07.2018 в 17:53 #9894
manjey73УчастникДа смущает описание public, private, internal (про этот вообще написано, что доступ к такому типу переменной должен быть из всей сборки). При этом не указывается, что они должны быть static.
В том числе и описание protected тоже есть.
Вот некоторые переменные в KpXXLogic видны из KPLogic, потому что он его подчиненный?
мы же их никак не описываем дополнительно в KpXXLogic, а они доступны..Даже повторить такого не получается почему-то…
Я к тому, что если бы был способ в KpXXLogic объявить переменную так, чтобы она была не static но доступна в KpXXLogic, XXLogic1, XXLogic2 было бы вообще отлично.
И Коммуникатор изолировал бы эти переменные для каждого вызова самой библиотеки.09.07.2018 в 17:09 #9903
MikhailМодераторбыл способ в KpXXLogic объявить переменную так, чтобы она была не static но доступна в KpXXLogic, XXLogic1, XXLogic2
Переменная, объявленная в классе KpXXLogic доступна внутри KpXXLogic.
Чтобы она была доступна в других классах, её нужно туда передать при создании или после создания объекта другого класса.09.07.2018 в 17:09 #9904
MikhailМодераторТакже члены класса становятся доступны при наследовании. Но насколько я понимаю, здесь наследование не требуется.
10.07.2018 в 11:09 #9906
manjey73УчастникТак наследование и не получится, в C# вроде нельзя делать вложенных наследников, если я правильно понял. По крайней мере у меня не получилось.
Если бы было можно то такой вариант тоже бы подошел..10.07.2018 в 21:36 #9909
MikhailМодераторделать вложенных наследников
Не совсем понятно что имеется ввиду.
10.07.2018 в 23:06 #9910
manjey73УчастникKpXXLogic наследник KPLogic или подчиненный,
Делать подчиненные классы уже для KpXXLogic вроде нельзя из-за C#, если я правильно понял. Может я не прав ? но у меня не получилось…11.07.2018 в 16:44 #9913
MikhailМодераторМожно сделать KpXXLogic2 наследника от KpXXLogic1, только в данном случае это вряд ли нужно.
12.07.2018 в 11:06 #9915
manjey73УчастникПочему ?, если это позволит напрямую работать с блоком данных, объявленных в KpXXLogic и получать значительную часть переменных без static лично меня это устроит.
Ну ладно с классом так не прокатит, если верно, что пока он не размещен в памяти, он не будет доступен в других классах. Но мне приходится передавать больше данных в KpXXLogic2 чем хотелось бы.
Так же хотелось бы возвращать или изменять кроме блока данных, объявленных в классе еще и часть булевых переменных. И заодно и списки.Потому что вариант, предложенный Ramiros возвращает только одно значение
return myClass, а как быть с остальными промежуточными значениями, которые мне могут быть важны ?12.07.2018 в 18:56 #9925
MikhailМодераторКак я уже писал, нужно делать свои классы, которые хранят те данные, которые нужны, и создавать объекты этих классов.
12.07.2018 в 21:18 #9926
manjey73УчастникТак оно так и есть.
класс KpMbusLogic имеет блок данных, некоторое количество переменных
класс «Разбор_Телеграммы» должен иметь доступ ко всем данным и переменным класса KpMbusLogic
класс «Еще один разбор» аналогично должен иметь доступ ко всем данным и переменным KpMbusLogicСоздаю в KpMbusLogic объект класса «Разбор_Телеграммы» и передаю туда скажем блок данных и даже список переменных. Из класса «Разбор_Телеграммы» можно вернуть только что-то одно по return. Дальше что ? как при этом вернуть еще и все оставшиеся переменные если я их меняю ?
Даже чтобы туда сюда гонять блок данных целый огород надо городить…Неужели нет способа как со static только для отдельных вызовов dll ?
12.07.2018 в 22:50 #9927Romiros
УчастникManjey, есть такая штука MVVM. Для WPF используется в основном. Там сложновато, когда начинаешь изучать, но зато объясняет принципы разделения кода.
Особо не углубляясь в MVVM, почитайте про взаимодействие Model и ViewModel и посмотрите примеры. Мне кажется Вы поймёте в чем у Вас проблема.-
Ответ изменён 8 лет, 1 месяц назад пользователем
Romiros.
13.07.2018 в 09:23 #9938
MikhailМодераторпередаю туда скажем блок данных и даже список переменных
Сделайте класс MyDataBlock и передавайте объект этого класса в метод для обработки.
можно вернуть только что-то одно по return
Сделайте класс MyResult и возвращайте его с помощью аргумента метода out.
-
Ответ изменён 8 лет, 1 месяц назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.