public static int GetLength(BinaryValueType valueType) { switch (valueType) { case BinaryValueType.BYTE: case BinaryValueType.BOOL: return(1); case BinaryValueType.SHORT: case BinaryValueType.USHORT: return(2); case BinaryValueType.INT: case BinaryValueType.UINT: case BinaryValueType.FLOAT: return(4); case BinaryValueType.LONG: case BinaryValueType.ULONG: case BinaryValueType.DOUBLE: return(8); default: throw new ArgumentException("invalid value type"); } }
/// <summary> /// Parses template data for binary value from given XML /// </summary> /// <param name="element">XElement containing template data for binary value</param> /// <param name="partsList">current list of binary parts</param> private void ParseValue(XElement element, ObservableCollection <BinaryPart> partsList) { long id = long.Parse(element.Attribute(Constants.TemplateXML_ID).Value); string name = element.Attribute(Constants.TemplateXML_Name).Value; string type = element.Attribute(Constants.TemplateXML_Type).Value.ToLower(); string converterName = element.Attribute(Constants.TemplateXML_Converter)?.Value ?? ""; IntToStringConverter converter = !string.IsNullOrWhiteSpace(converterName) ? converters.Where(x => x.Name == converterName).FirstOrDefault() : null; BinaryValueType valueType = (BinaryValueType)Enum.Parse(typeof(BinaryValueType), type, true); BinaryValue binaryValue = new BinaryValue(id, name, valueType, converter); partsList.Add(binaryValue); }