Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Общий класс для нескольких проектов  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22306
jenya7
Шо значит не озвучил cреду разработки - я об ней второй день говорю - .Net - C#.
Думаешь, этого достаточно?
Как минимум - .Net Framework или .Net Core
8 мар 21, 12:49    [22291108]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5967
jenya7
Шо значит не озвучил cреду разработки - я об ней второй день говорю - .Net - C#.

Строго говоря, .Net - C# -это не среда разработки.

Сообщение было отредактировано: 8 мар 21, 12:48
8 мар 21, 12:51    [22291109]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
jenya7
Member

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

.NET Framework 4.6.1. а что есть существенная разница? в .Net Core мои фантазии реализуются? :)
8 мар 21, 12:55    [22291112]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5967
jenya7
.NET Framework 4.6.1. а что есть существенная разница? в .Net Core мои фантазии реализуются? :)

Разница есть. Не всё то, что есть в .Net Framework, реализовано в .Net Core или .Net 5. Но если вы не будете использовать такие вещи как, к примеру, WCF или WF, то для вас это может быть и не критичным.

Сообщение было отредактировано: 8 мар 21, 12:53
8 мар 21, 12:58    [22291113]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22306
jenya7
.NET Framework 4.6.1. а что есть существенная разница? в .Net Core мои фантазии реализуются? :)
В Net Core принципиально по-другому строится windows-служба
Если вообще нужна служба. Если достаточно будет обычной WF-проги (раз уж нужно взаимодействие с пользователем), которая работает только когда запущена, ну можно и без службы обойтись.
8 мар 21, 13:04    [22291116]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5967
jenya7
а как это можно хранить в БД?
объект

Почитайте про сериализацию/десериализацию объектов. Лично я предпочитаю сериализовывать/десериализовывать в формат JSON. Этот формат с некоторых пор, помимо двоичного и XML доступен к использованию "из коробки", причём пользоваться коробочной версией значительно удобней, чем старым, добрым NewtonSoft. К тому же JSON отлично, без дополнительных плясок с бубном, понимают и др. языки, такие как JavaScript/TypeScript и Java (на тот случай, если вам потребуется передать результат на сторону).
8 мар 21, 13:16    [22291121]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22306
тут вопрос только в том, сможет ли он десериализовать состояние класса, который завязан на состояние внешнего устройства. Так все равно может понадобиться некий централизованный сервис, который их удерживает в памяти.
8 мар 21, 13:25    [22291127]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 4159
https://docs.microsoft.com/ru-ru/dotnet/standard/io/memory-mapped-files
8 мар 21, 14:06    [22291140]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
hVostt
Member

Откуда:
Сообщений: 19144
Просмотрел топик, а что про COM даже ещё никто не сказал? :)

Сложно-сложно. Старая школа, создавай COM, регистрируй и общайся через него разными процессами )))
8 мар 21, 14:08    [22291144]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
jenya7
Member

Откуда:
Сообщений: 1349
Roman Mejtes
https://docs.microsoft.com/ru-ru/dotnet/standard/io/memory-mapped-files

выглядит круто. попробую.
8 мар 21, 14:12    [22291148]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5967
jenya7
выглядит круто. попробую.

Мне кажется, что это дорога в Ад. :)
8 мар 21, 14:13    [22291150]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
jenya7
Member

Откуда:
Сообщений: 1349
Compositum
jenya7
выглядит круто. попробую.

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


начнем с того что методы Write, Read не предоставляют возможности записи объекта. а как сериализовать IADevice REL1; понятия не имею. в принипе я могу открыть обычный файл и писать-читать.

Сообщение было отредактировано: 8 мар 21, 14:24
8 мар 21, 14:27    [22291157]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5967
jenya7
а как сериализовать IADevice REL1;

Покажите свою реализацию IADevice, а так же ваш код сериализации.
8 мар 21, 14:43    [22291166]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
Dima T
Member

Откуда:
Сообщений: 15698
jenya7
как сериализовать IADevice REL1; понятия не имею

Никак скорее всего. Внутри них хэндлы объектов ОС, открытых COM-портов или типа того, их нельзя сериализовать. Они действительны только внутри конкретного процесса.
Есть способ передать хэндл другому процессу DuplicateHandle(), но тут тебе надо в этот класс залезть, чтобы до хэндла добраться. Поэтому не будет работать как ты хочешь.
8 мар 21, 14:49    [22291172]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
jenya7
Member

Откуда:
Сообщений: 1349
Compositum
jenya7
а как сериализовать IADevice REL1;

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


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;
                  }
            }
        }
    }
}


Сообщение было отредактировано: 8 мар 21, 14:46
8 мар 21, 14:52    [22291173]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5967
jenya7,

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

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

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

Как вариант источника информации: тема сериализации/десериализации хорошо разжёвана в главе 17 (Сериализация) книги "C# 7.0. Справочник. Полное описание языка" за авторством Албахари Бен , Албахари Джозеф.

Сообщение было отредактировано: 8 мар 21, 14:59
8 мар 21, 15:02    [22291178]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
jenya7
Member

Откуда:
Сообщений: 1349
Compositum
jenya7,

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

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

я могу оформить IADevice в отдельный класс но он все равно будет содержать методы и логику иначе как я потом буду управлять картой.
8 мар 21, 15:08    [22291180]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5967
jenya7
я могу оформить IADevice в отдельный класс но он все равно будет содержать методы и логику иначе как я потом буду управлять картой.

Так вам же не обязательно сериализовывать именно класс, реализующий этот интерфейс. Вы можете специально для возможности сериализации/десериализации создать отдельный простой класс, содержащий все нужные вам данные, подлежащие передачи на сторону.
8 мар 21, 15:12    [22291182]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
jenya7
Member

Откуда:
Сообщений: 1349
Compositum
jenya7
я могу оформить IADevice в отдельный класс но он все равно будет содержать методы и логику иначе как я потом буду управлять картой.

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

он должен быть статическим?
8 мар 21, 15:18    [22291187]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22306
jenya7
он должен быть статическим?
забудь вообще это слово
8 мар 21, 15:19    [22291189]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
fkthat
Member

Откуда:
Сообщений: 4643
jenya7
а как это можно хранить в БД?

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

Очевидно же, что просто подключить девайс к серверу БД.
8 мар 21, 15:23    [22291191]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
fkthat
Member

Откуда:
Сообщений: 4643
Compositum
Этот формат с некоторых пор, помимо двоичного и XML доступен к использованию "из коробки"

Бинарную сериализацию из .NET Core выпилили.
8 мар 21, 15:26    [22291192]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5967
jenya7
он должен быть статическим?

Нет конечно. Невозможно создавать экземпляры статических классов. Мне кажется, что у вас по части ООП и .NET некоторая каша в голове. Возможно имеет смысл сначала почитать основы и попрактиковаться в создании простеньких консольных приложений аля "Hello World", прежде чем писать боевое приложение. В противном случае вы рискуете "утонуть" в своём же коде. ИМХО.

Сообщение было отредактировано: 8 мар 21, 15:22
8 мар 21, 15:26    [22291193]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
Compositum
Member

Откуда: Санкт-Петербург
Сообщений: 5967
fkthat
Бинарную сериализацию из .NET Core выпилили.

Не знал. :) Да и не пользовался ею давно в реальных приложениях (только в тестовых консольках, когда экспериментировал с тем, о чём читал в книжках). Даже XML уже давно перестал использовать в пользу JSON.

Сообщение было отредактировано: 8 мар 21, 15:21
8 мар 21, 15:29    [22291194]     Ответить | Цитировать Сообщить модератору
 Re: Общий класс для нескольких проектов  [new]
Dima T
Member

Откуда:
Сообщений: 15698
jenya7
я могу оформить IADevice в отдельный класс но он все равно будет содержать методы и логику иначе как я потом буду управлять картой.

Как ты к карте обращаешься? Хэндлы (HANDLE) объектов виндавса есть? Если есть, то с сериализацией будет засада 22291172
8 мар 21, 18:55    [22291246]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / WinForms, .Net Framework Ответить