Объявление переменных в KpLogic

Стартовая страница Форумы Разработка и интеграция Объявление переменных в KpLogic

Просмотр 13 сообщений - с 61 по 73 (из 73 всего)
  • Автор
    Записи
  • #9893
    Mikhail
    Модератор

    Здесь нужно мыслить в парадигме объектно-ориентированного программирования и всё встанет на свои места ))

    чтобы Коммуникатор ограничивал блоки данных каждого вызова dll, особенно учитывая, что он может вызывать библиотеки несколько раз и в несколько потоков

    Верно, Коммуникатор для каждого КП создаёт отдельный объект типа KpXXLogic, который Вы описываете в драйвере.

    #9894
    manjey73
    Участник

    Да смущает описание public, private, internal (про этот вообще написано, что доступ к такому типу переменной должен быть из всей сборки). При этом не указывается, что они должны быть static.
    В том числе и описание protected тоже есть.
    Вот некоторые переменные в KpXXLogic видны из KPLogic, потому что он его подчиненный?
    мы же их никак не описываем дополнительно в KpXXLogic, а они доступны..

    Даже повторить такого не получается почему-то…
    Я к тому, что если бы был способ в KpXXLogic объявить переменную так, чтобы она была не static но доступна в KpXXLogic, XXLogic1, XXLogic2 было бы вообще отлично.
    И Коммуникатор изолировал бы эти переменные для каждого вызова самой библиотеки.

    #9903
    Mikhail
    Модератор

    был способ в KpXXLogic объявить переменную так, чтобы она была не static но доступна в KpXXLogic, XXLogic1, XXLogic2

    Переменная, объявленная в классе KpXXLogic доступна внутри KpXXLogic.
    Чтобы она была доступна в других классах, её нужно туда передать при создании или после создания объекта другого класса.

    #9904
    Mikhail
    Модератор

    Также члены класса становятся доступны при наследовании. Но насколько я понимаю, здесь наследование не требуется.

    #9906
    manjey73
    Участник

    Так наследование и не получится, в C# вроде нельзя делать вложенных наследников, если я правильно понял. По крайней мере у меня не получилось.
    Если бы было можно то такой вариант тоже бы подошел..

    #9909
    Mikhail
    Модератор

    делать вложенных наследников

    Не совсем понятно что имеется ввиду.

    #9910
    manjey73
    Участник

    KpXXLogic наследник KPLogic или подчиненный,
    Делать подчиненные классы уже для KpXXLogic вроде нельзя из-за C#, если я правильно понял. Может я не прав ? но у меня не получилось…

    #9913
    Mikhail
    Модератор

    Можно сделать KpXXLogic2 наследника от KpXXLogic1, только в данном случае это вряд ли нужно.

    #9915
    manjey73
    Участник

    Почему ?, если это позволит напрямую работать с блоком данных, объявленных в KpXXLogic и получать значительную часть переменных без static лично меня это устроит.
    Ну ладно с классом так не прокатит, если верно, что пока он не размещен в памяти, он не будет доступен в других классах. Но мне приходится передавать больше данных в KpXXLogic2 чем хотелось бы.
    Так же хотелось бы возвращать или изменять кроме блока данных, объявленных в классе еще и часть булевых переменных. И заодно и списки.

    Потому что вариант, предложенный Ramiros возвращает только одно значение
    return myClass, а как быть с остальными промежуточными значениями, которые мне могут быть важны ?

    #9925
    Mikhail
    Модератор

    Как я уже писал, нужно делать свои классы, которые хранят те данные, которые нужны, и создавать объекты этих классов.

    #9926
    manjey73
    Участник

    Так оно так и есть.
    класс KpMbusLogic имеет блок данных, некоторое количество переменных
    класс «Разбор_Телеграммы» должен иметь доступ ко всем данным и переменным класса KpMbusLogic
    класс «Еще один разбор» аналогично должен иметь доступ ко всем данным и переменным KpMbusLogic

    Создаю в KpMbusLogic объект класса «Разбор_Телеграммы» и передаю туда скажем блок данных и даже список переменных. Из класса «Разбор_Телеграммы» можно вернуть только что-то одно по return. Дальше что ? как при этом вернуть еще и все оставшиеся переменные если я их меняю ?
    Даже чтобы туда сюда гонять блок данных целый огород надо городить…

    Неужели нет способа как со static только для отдельных вызовов dll ?

    #9927
    Romiros
    Участник

    Manjey, есть такая штука MVVM. Для WPF используется в основном. Там сложновато, когда начинаешь изучать, но зато объясняет принципы разделения кода.
    Особо не углубляясь в MVVM, почитайте про взаимодействие Model и ViewModel и посмотрите примеры. Мне кажется Вы поймёте в чем у Вас проблема.

    • Ответ изменён 8 лет, 1 месяц назад пользователем Romiros.
    #9938
    Mikhail
    Модератор

    передаю туда скажем блок данных и даже список переменных

    Сделайте класс MyDataBlock и передавайте объект этого класса в метод для обработки.

    можно вернуть только что-то одно по return

    Сделайте класс MyResult и возвращайте его с помощью аргумента метода out.

Просмотр 13 сообщений - с 61 по 73 (из 73 всего)
  • Для ответа в этой теме необходимо авторизоваться.