Типовой объект (эталон)

252
17 декабря 2018, 15:20

Не смог сформулировать заголовок, попробую объяснить. По сети получаю данные, среди данный есть id устройства. Нужно по этому id создать объект. При чем, зная id, я понимаю что за устройство, какие значения свойств он имеет. Например, id = 1: name = "device1", inputs = 3

т.е. у меня нарисовывается коллекция типовых объектов из которых нужно брать значения свойств для вновь создаваемых объектов.

Сейчас у меня есть класс Device, в нем статический список с типовыми Device'ми. При создании объекта, я нахожу по id в этом списке нужные значения свойств.

Как лучше делать подобную вещь?

Answer 1

Я бы создал что-то вроде такого:

class DeviceFactory
{
     public static Device CreateDevice(int deviceId)
     {
           switch (deviceID)
           {
               case 1:
                  return new Deivce(){id = deviceId, name="name1", inputs=3};
               case 2:
                  return new Deivce(){id = deviceId, name="name2", inputs=5};
               case 3:
                  return new Deivce(){id = deviceId, name="name3", inputs=2};
               default:
                  return new Deivce();
           }
     }
}
READ ALSO
Зачем нужен const, если можно не менять int

Зачем нужен const, если можно не менять int

Не понимаю, зачем во многих языках используется тип данных const, если можно создать int и не менять его? Прошу объяснить и привести пример

259
WPF обработка нажатия клавиш вне окна

WPF обработка нажатия клавиш вне окна

Делаю приложение на WPFМне нужно, чтобы даже если окно не в фокусе, то оно все равно могло реагировать на нажатие клавиши Ctrl

249
Соединить списки

Соединить списки

Есть коллекция объектов A в каждом из объектов A есть коллекция объектов B и есть просто объект BКак с помощью LINQ получить коллекцию объектов...

220
Событие - Когда добавляется что либо в StackPanel

Событие - Когда добавляется что либо в StackPanel

Я прикрутил к StackPanel скролл, но он не так пока работает как мне хотелось быОн стоит на месте, когда содержимого больше чем высота StackPanel

165