private void PopulateOSBLabel(object data, FieldInfo currentField, FieldInfo thisField) { var currentValue = (OSBLabel[])currentField.GetValue(data); var valuesToAssign = new OptionSelectButtonLabel[currentValue.Length]; for (var j = 0; j < currentValue.Length; j++) { var currentItem = currentValue[j]; var label = new OptionSelectButtonLabel(); var lineBuilder = new StringBuilder(currentItem.Line1.Length); foreach (var chr in currentItem.Line1) { if (chr == 0) { lineBuilder.Append(" "); } else { lineBuilder.Append((char)chr); } } label.Line1 = lineBuilder.ToString(); lineBuilder = new StringBuilder(currentItem.Line2.Length); foreach (var chr in currentItem.Line2) { if (chr == 0) { lineBuilder.Append(" "); } else { lineBuilder.Append((char)chr); } } label.Line2 = lineBuilder.ToString(); label.Inverted = currentItem.Inverted; valuesToAssign[j] = label; } thisField.SetValue(this, valuesToAssign); }
internal void PopulateFromStruct(object data) { Type thisType = this.GetType(); Type dataType = data.GetType(); FieldInfo[] fields = dataType.GetFields(BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); for (int i = 0; i < fields.Length; i++) { FieldInfo currentField = fields[i]; FieldInfo thisField = thisType.GetField(currentField.Name, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); if (thisField == null) { continue; } Type currentFieldType = currentField.FieldType; if (currentFieldType.IsArray) { if (currentFieldType == typeof(Headers.DED_PFL_LineOfText[])) { Headers.DED_PFL_LineOfText[] currentValue = (Headers.DED_PFL_LineOfText[])currentField.GetValue(data); string[] valuesToAssign = new string[currentValue.Length]; for (int j = 0; j < currentValue.Length; j++) { Headers.DED_PFL_LineOfText currentItem = currentValue[j]; StringBuilder sb = new StringBuilder(currentItem.chars.Length); bool invert = false; if (currentField.Name.ToLowerInvariant().Contains("invert")) { invert = true;//this is an inversion line } for (int k = 0; k < currentItem.chars.Length; k++) { sbyte chr = currentItem.chars[k]; if (invert) { if (chr == 0x02) { sb.Append((char)chr); } else { sb.Append(' '); } } else { if (chr != 0) { sb.Append((char)chr); } } } valuesToAssign[j] = sb.ToString(); } thisField.SetValue(this, valuesToAssign); } else if (currentFieldType == typeof(Headers.OSBLabel[])) { Headers.OSBLabel[] currentValue = (Headers.OSBLabel[])currentField.GetValue(data); OptionSelectButtonLabel[] valuesToAssign = new OptionSelectButtonLabel[currentValue.Length]; for (int j = 0; j < currentValue.Length; j++) { Headers.OSBLabel currentItem = currentValue[j]; OptionSelectButtonLabel label = new OptionSelectButtonLabel(); StringBuilder lineBuilder = new StringBuilder(currentItem.Line1.Length); foreach (sbyte chr in currentItem.Line1) { if (chr == 0) { lineBuilder.Append(" "); } else { lineBuilder.Append((char)chr); } } label.Line1 = lineBuilder.ToString(); lineBuilder = new StringBuilder(currentItem.Line2.Length); foreach (sbyte chr in currentItem.Line2) { if (chr == 0) { lineBuilder.Append(" "); } else { lineBuilder.Append((char)chr); } } label.Inverted = currentItem.Inverted; valuesToAssign[j] = label; } thisField.SetValue(this, valuesToAssign); } else { System.Array currentValue = (System.Array)currentField.GetValue(data); thisField.SetValue(this, currentValue); } } else if (currentFieldType.Name.ToLowerInvariant().Contains("uint")) { thisField.SetValue(this, BitConverter.ToInt32(BitConverter.GetBytes((uint)currentField.GetValue(data)), 0)); } else { thisField.SetValue(this, currentField.GetValue(data)); } } }
internal void PopulateFromStruct(object data) { Type thisType = this.GetType(); Type dataType = data.GetType(); FieldInfo[] fields = dataType.GetFields(BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); for (int i = 0; i < fields.Length; i++) { FieldInfo currentField = fields[i]; FieldInfo thisField = thisType.GetField(currentField.Name, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); if (thisField == null) continue; Type currentFieldType = currentField.FieldType; if (currentFieldType.IsArray) { if (currentFieldType == typeof(Headers.DED_PFL_LineOfText[])) { Headers.DED_PFL_LineOfText[] currentValue = (Headers.DED_PFL_LineOfText[])currentField.GetValue(data); string[] valuesToAssign = new string[currentValue.Length]; for (int j = 0; j < currentValue.Length; j++) { Headers.DED_PFL_LineOfText currentItem = currentValue[j]; StringBuilder sb = new StringBuilder(currentItem.chars.Length); bool invert = false; if (currentField.Name.ToLowerInvariant().Contains("invert")) { invert = true;//this is an inversion line } for (int k = 0; k < currentItem.chars.Length; k++) { sbyte chr = currentItem.chars[k]; if (invert) { if (chr == 0x02) { sb.Append((char)chr); } else { sb.Append(' '); } } else { if (chr != 0) { sb.Append((char)chr); } } } valuesToAssign[j] = sb.ToString(); } thisField.SetValue(this, valuesToAssign); } else if (currentFieldType == typeof(Headers.OSBLabel[])) { Headers.OSBLabel[] currentValue = (Headers.OSBLabel[])currentField.GetValue(data); OptionSelectButtonLabel[] valuesToAssign = new OptionSelectButtonLabel[currentValue.Length]; for (int j = 0; j < currentValue.Length; j++) { Headers.OSBLabel currentItem = currentValue[j]; OptionSelectButtonLabel label = new OptionSelectButtonLabel(); StringBuilder lineBuilder = new StringBuilder(currentItem.Line1.Length); foreach (sbyte chr in currentItem.Line1) { if (chr == 0) { lineBuilder.Append(" "); } else { lineBuilder.Append((char)chr); } } label.Line1 = lineBuilder.ToString(); lineBuilder = new StringBuilder(currentItem.Line2.Length); foreach (sbyte chr in currentItem.Line2) { if (chr == 0) { lineBuilder.Append(" "); } else { lineBuilder.Append((char)chr); } } label.Inverted = currentItem.Inverted; valuesToAssign[j] = label; } thisField.SetValue(this, valuesToAssign); } else { System.Array currentValue = (System.Array)currentField.GetValue(data); thisField.SetValue(this, currentValue); } } else if (currentFieldType.Name.ToLowerInvariant().Contains("uint")) { thisField.SetValue(this, BitConverter.ToInt32(BitConverter.GetBytes((uint)currentField.GetValue(data)), 0)); } else { thisField.SetValue(this, currentField.GetValue(data)); } } }