public byte[] ToCurrentFormat() { //Update if Unit changed UpdateCustomUnits(); var bytes = new List <byte>(); bytes.AddRange(Signature.ToBytes(2)); bytes.Add((byte)Version); //'for' instead 'foreach' for upgrade support for (var i = 0; i < InputPoint.GetCount(FileVersion); ++i) { var obj = Inputs.ElementAtOrDefault(i) ?? new InputPoint(); obj.FileVersion = FileVersion; bytes.AddRange(obj.ToBytes()); } for (var i = 0; i < OutputPoint.GetCount(FileVersion); ++i) { var obj = Outputs.ElementAtOrDefault(i) ?? new OutputPoint(); bytes.AddRange(obj.ToBytes()); } for (var i = 0; i < VariablePoint.GetCount(FileVersion); ++i) { var obj = Variables.ElementAtOrDefault(i) ?? new VariablePoint(); bytes.AddRange(obj.ToBytes()); } for (var i = 0; i < ProgramPoint.GetCount(FileVersion); ++i) { var obj = Programs.ElementAtOrDefault(i) ?? new ProgramPoint(); bytes.AddRange(obj.ToBytes()); } for (var i = 0; i < ControllerPoint.GetCount(FileVersion); ++i) { var obj = Controllers.ElementAtOrDefault(i) ?? new ControllerPoint(); bytes.AddRange(obj.ToBytes()); } for (var i = 0; i < ScreenPoint.GetCount(FileVersion); ++i) { var obj = Screens.ElementAtOrDefault(i) ?? new ScreenPoint(); bytes.AddRange(obj.ToBytes()); } for (var i = 0; i < GraphicPoint.GetCount(FileVersion); ++i) { var obj = Graphics.ElementAtOrDefault(i) ?? new GraphicPoint(); bytes.AddRange(obj.ToBytes()); } for (var i = 0; i < UserPoint.GetCount(FileVersion); ++i) { var obj = Users.ElementAtOrDefault(i) ?? new UserPoint(); bytes.AddRange(obj.ToBytes()); } for (var i = 0; i < CustomDigitalUnitsPoint.GetCount(FileVersion); ++i) { var obj = CustomUnits.Digital.ElementAtOrDefault(i) ?? new CustomDigitalUnitsPoint(); bytes.AddRange(obj.ToBytes()); } for (var i = 0; i < TablePoint.GetCount(FileVersion); ++i) { var obj = Tables.ElementAtOrDefault(i) ?? new TablePoint(); bytes.AddRange(obj.ToBytes()); } { var settings = Settings ?? new Settings(FileVersion); bytes.AddRange(settings.ToBytes()); } for (var i = 0; i < SchedulePoint.GetCount(FileVersion); ++i) { var obj = Schedules.ElementAtOrDefault(i) ?? new SchedulePoint(); bytes.AddRange(obj.ToBytes()); } for (var i = 0; i < HolidayPoint.GetCount(FileVersion); ++i) { var obj = Holidays.ElementAtOrDefault(i) ?? new HolidayPoint(); bytes.AddRange(obj.ToBytes()); } for (var i = 0; i < MonitorPoint.GetCount(FileVersion); ++i) { var obj = Monitors.ElementAtOrDefault(i) ?? new MonitorPoint(); bytes.AddRange(obj.ToBytes()); } for (var i = 0; i < ScheduleCode.GetCount(FileVersion); ++i) { var obj = ScheduleCodes.ElementAtOrDefault(i) ?? new ScheduleCode(); bytes.AddRange(obj.ToBytes()); } for (var i = 0; i < HolidayCode.GetCount(FileVersion); ++i) { var obj = HolidayCodes.ElementAtOrDefault(i) ?? new HolidayCode(); bytes.AddRange(obj.ToBytes()); } for (var i = 0; i < ProgramCode.GetCount(FileVersion); ++i) { var obj = ProgramCodes.ElementAtOrDefault(i) ?? new ProgramCode(); bytes.AddRange(obj.ToBytes()); } for (var i = 0; i < CustomAnalogUnitsPoint.GetCount(FileVersion); ++i) { var obj = CustomUnits.Analog.ElementAtOrDefault(i) ?? new CustomAnalogUnitsPoint(); bytes.AddRange(obj.ToBytes()); } if (!IsUpgraded) { CheckSize(bytes.Count, Length); } return(bytes.ToArray()); }