powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Общий класс для нескольких проектов
25 сообщений из 51, страница 2 из 3
Общий класс для нескольких проектов
    #40051563
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
Шо значит не озвучил cреду разработки - я об ней второй день говорю - .Net - C#.
Думаешь, этого достаточно?
Как минимум - .Net Framework или .Net Core
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051564
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
Шо значит не озвучил cреду разработки - я об ней второй день говорю - .Net - C#.

Строго говоря, .Net - C# -это не среда разработки .
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051566
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro
jenya7
Шо значит не озвучил cреду разработки - я об ней второй день говорю - .Net - C#.
Думаешь, этого достаточно?
Как минимум - .Net Framework или .Net Core

.NET Framework 4.6.1. а что есть существенная разница? в .Net Core мои фантазии реализуются? :)
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051567
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
.NET Framework 4.6.1. а что есть существенная разница? в .Net Core мои фантазии реализуются? :)

Разница есть. Не всё то, что есть в .Net Framework, реализовано в .Net Core или .Net 5. Но если вы не будете использовать такие вещи как, к примеру, WCF или WF, то для вас это может быть и не критичным.
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051570
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
.NET Framework 4.6.1. а что есть существенная разница? в .Net Core мои фантазии реализуются? :)
В Net Core принципиально по-другому строится windows-служба
Если вообще нужна служба. Если достаточно будет обычной WF-проги (раз уж нужно взаимодействие с пользователем), которая работает только когда запущена, ну можно и без службы обойтись.
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051573
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
а как это можно хранить в БД?
объект

Почитайте про сериализацию/десериализацию объектов. Лично я предпочитаю сериализовывать/десериализовывать в формат JSON. Этот формат с некоторых пор, помимо двоичного и XML доступен к использованию "из коробки", причём пользоваться коробочной версией значительно удобней, чем старым, добрым NewtonSoft. К тому же JSON отлично, без дополнительных плясок с бубном, понимают и др. языки, такие как JavaScript/TypeScript и Java (на тот случай, если вам потребуется передать результат на сторону).
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051578
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут вопрос только в том, сможет ли он десериализовать состояние класса, который завязан на состояние внешнего устройства. Так все равно может понадобиться некий централизованный сервис, который их удерживает в памяти.
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051591
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051594
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просмотрел топик, а что про COM даже ещё никто не сказал? :)

Сложно-сложно. Старая школа, создавай COM, регистрируй и общайся через него разными процессами )))
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051597
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes
https://docs.microsoft.com/ru-ru/dotnet/standard/io/memory-mapped-files

выглядит круто. попробую.
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051599
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
выглядит круто. попробую.

Мне кажется, что это дорога в Ад. :)
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051604
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Compositum
jenya7
выглядит круто. попробую.

Мне кажется, что это дорога в Ад. :)


начнем с того что методы Write, Read не предоставляют возможности записи объекта. а как сериализовать IADevice REL1; понятия не имею. в принипе я могу открыть обычный файл и писать-читать.
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051612
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
а как сериализовать IADevice REL1;

Покажите свою реализацию IADevice, а так же ваш код сериализации.
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051618
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
как сериализовать IADevice REL1; понятия не имею

Никак скорее всего. Внутри них хэндлы объектов ОС, открытых COM-портов или типа того, их нельзя сериализовать. Они действительны только внутри конкретного процесса.
Есть способ передать хэндл другому процессу DuplicateHandle() , но тут тебе надо в этот класс залезть, чтобы до хэндла добраться. Поэтому не будет работать как ты хочешь.
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051619
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Compositum
jenya7
а как сериализовать IADevice REL1;

Покажите свою реализацию IADevice, а так же ваш код сериализации.


Код: 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.
using IAHAL;  //dll  от производителя карты - IA3178

//объекты из dll
IADevices iadevs = new IADevices();
IADevice REL1;
IADevice REL2;

void Init_3178()
{
    IAError ec;
    bool rel1_ex = false;
    bool rel2_ex = false;

    //находим все девайсы подключенные к USB
    ec = iadevs.DetectAllDevices();
    if (ec != IAError.IA_OK)
        MessageBox.Show(iadevs.GetErrorMessage(ec));
    if (iadevs.Devices.Count == 0)
        MessageBox.Show("No device found");
    else
    {
         foreach (IADevice dev in iadevs)
         {
              //get the first device with DI functions
              if (dev.HasDigitalInput || dev.HasDigitalOutput)
              {
                  if (dev.UniqueID.Contains("01_IA_3178"))
                  {
                      REL1 = dev;
                      relay_rel1 = 0;
                      REL1.WriteDO(0);
                      rel1_ex = true;
                  }
                  else if (dev.UniqueID.Contains("00_IA_3178"))
                 {
                      REL2 = dev;
                      REL2.WriteDO(0);
                      rel2_ex = true;
                  }
            }
        }
    }
}
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051622
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

Вы понимаете, что такое реализация интерфейса ? То, что вы сейчас скопировали из своего более раннего сообщения - это вообще не то.

Если вы хотите сериализовывать экземпляр класса, реализующего интерфейс IADevice, то это должен быть максимально простой класс (DTO-класс), содержащий только данные. Обычно под это дело создают классы отдельно, предназначенные именно для сериализации и десериатилазции. В них, посредством специальных атрибутов, указывают, какие поля сериализовывать, а какие нет. Там же указывают, какие поля обязательны к заполнению, а какие нет. Эти классы, как правило, не содержат логики, т.к. они не для этого предназначены.

Если у вас реализация обозначенного интерфейса содержит в себе не просто свойства, но и дополнительные скрытые поля, которые нужно правильно инициализировать тем или иным способом, а так же содержит различные методы, то такой класс, скорее всего, создавался без прицела на возможность его сериализации. Тогда вам нужно написать свой простой класс, сериализующий данные.

Как вариант источника информации: тема сериализации/десериализации хорошо разжёвана в главе 17 (Сериализация) книги "C# 7.0. Справочник. Полное описание языка" за авторством Албахари Бен , Албахари Джозеф.
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051624
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Compositum
jenya7,

Вы понимаете, что такое реализация интерфейса ? То, что вы сейчас скопировали из своего более раннего сообщения - это вообще не то.

Если вы хотите сериализовывать экземпляр класса, реализующего интерфейс IADevice, то это должен быть максимально простой класс (DTO-класс), содержащий только данные. Обычно под это дело создают классы отдельно, предназначенные именно для сериализации и десериатилазции. В них, посредством специальных атрибутов, указывают, какие поля сериализовывать, а какие нет. Там же указывают, какие поля обязательны к заполнению, а какие нет. Эти классы, как правило, не содержат логики, т.к. они не для этого предназначены.

я могу оформить IADevice в отдельный класс но он все равно будет содержать методы и логику иначе как я потом буду управлять картой.
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051625
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
я могу оформить IADevice в отдельный класс но он все равно будет содержать методы и логику иначе как я потом буду управлять картой.

Так вам же не обязательно сериализовывать именно класс, реализующий этот интерфейс. Вы можете специально для возможности сериализации/десериализации создать отдельный простой класс, содержащий все нужные вам данные, подлежащие передачи на сторону.
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051629
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Compositum
jenya7
я могу оформить IADevice в отдельный класс но он все равно будет содержать методы и логику иначе как я потом буду управлять картой.

Так вам же не обязательно сериализовывать именно класс, реализующий этот интерфейс. Вы можете специально для возможности сериализации/десериализации создать отдельный простой класс, содержащий все нужные вам данные, подлежащие передачи на сторону.

он должен быть статическим?
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051630
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
он должен быть статическим?
забудь вообще это слово
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051632
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
а как это можно хранить в БД?

jenya7
это девайсы подключенные по USB.

Очевидно же, что просто подключить девайс к серверу БД.
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051633
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Compositum
Этот формат с некоторых пор, помимо двоичного и XML доступен к использованию "из коробки"

Бинарную сериализацию из .NET Core выпилили.
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051634
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
он должен быть статическим?

Нет конечно. Невозможно создавать экземпляры статических классов. Мне кажется, что у вас по части ООП и .NET некоторая каша в голове. Возможно имеет смысл сначала почитать основы и попрактиковаться в создании простеньких консольных приложений аля "Hello World", прежде чем писать боевое приложение. В противном случае вы рискуете "утонуть" в своём же коде. ИМХО.
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051635
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Бинарную сериализацию из .NET Core выпилили.

Не знал. :) Да и не пользовался ею давно в реальных приложениях (только в тестовых консольках, когда экспериментировал с тем, о чём читал в книжках). Даже XML уже давно перестал использовать в пользу JSON.
...
Рейтинг: 0 / 0
Общий класс для нескольких проектов
    #40051675
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
я могу оформить IADevice в отдельный класс но он все равно будет содержать методы и логику иначе как я потом буду управлять картой.

Как ты к карте обращаешься? Хэндлы (HANDLE) объектов виндавса есть? Если есть, то с сериализацией будет засада 22291172
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 2 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Общий класс для нескольких проектов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]