/*public bool SaveDevice<T>(T arg) where T : SimplestСomponent * { * object someDevice = arg; * if (typeof(T) == typeof(EthernetSwitch)) return SaveSwitchDevice((EthernetSwitch)someDevice); * if (typeof(T) == typeof(RS485device)) return SaveRS485Device((RS485device)someDevice); * return false; * }*/ public IList <Cabinet> GetCabinetsWithTwoTypeDevices <T1, T2>() where T1 : SimplestСomponent where T2 : SimplestСomponent { List <Cabinet> CabinetsWithdevs = new List <Cabinet>(); foreach (Cabinet cabinet in cabinetsLst) { List <T1> devicesListT1 = (List <T1>)cabinet.GetDevicesList <T1>(); List <T2> devicesListT2 = (List <T2>)cabinet.GetDevicesList <T2>(); // Будем работать только с теми шкафами в которых есть приборы типа T1 или T2 if (devicesListT1.Count > 0 || devicesListT2.Count > 0) { // В возвращаемом из метода списке будем создавать новые шкафы Cabinet newCabinet = new Cabinet { Designation = cabinet.Designation, DeviceType = cabinet.DeviceType }; foreach (T1 item in devicesListT1) { newCabinet.AddItem(item); } foreach (T2 item in devicesListT2) { newCabinet.AddItem(item); } CabinetsWithdevs.Add(newCabinet); } } return(CabinetsWithdevs); }
public IList <Cabinet> AddTwoListsOfCabinets(IList <Cabinet> list1, IList <Cabinet> list2) { IList <Cabinet> cabOut = new List <Cabinet>(); foreach (Cabinet cab485 in list1) { Cabinet newCab = new Cabinet(); newCab.Designation = cab485.Designation; foreach (RS485device device485 in cab485.GetAllDevicesList) { newCab.AddItem(device485); } cabOut.Add(newCab); } foreach (Cabinet cab232 in list2) { foreach (Cabinet cab485 in cabOut) { if (cab232.Designation.Equals(cab485.Designation)) { foreach (RS232device device232 in cab232.GetAllDevicesList) { cab485.AddItem(device232); } } } } foreach (Cabinet cab232 in list2) { bool compare = false; foreach (Cabinet cab485 in list1) { if (cab232.Designation.Equals(cab485.Designation)) { compare = true; break; } } if (!compare) { cabOut.Add(cab232); } } return(cabOut); }
public IList <Cabinet> GetCabinetsWithDevices <T>() where T : SimplestСomponent { List <Cabinet> CabinetsWithdevs = new List <Cabinet>(); foreach (Cabinet cabinet in cabinetsLst) { List <T> devicesList = (List <T>)cabinet.GetDevicesList <T>(); if (devicesList.Count > 0) { Cabinet newCabinet = new Cabinet { Designation = cabinet.Designation, DeviceType = cabinet.DeviceType }; foreach (T item in devicesList) { newCabinet.AddItem(item); } CabinetsWithdevs.Add(newCabinet); } } return(CabinetsWithdevs); }