public List <DynamicBerConverterField> Decode(byte[] val) { List <DynamicBerConverterField> ret = new List <DynamicBerConverterField>(); object[] decoded = null; int berpos = -1; foreach (int curpos in ConversionRules.Keys) { try { decoded = BerConverter.Decode(ConversionRules[curpos], val); berpos = curpos; break; } catch (Exception ex) { ex.ToDummy(); } } if (berpos != -1) { try { foreach (int pos in FieldNames[berpos].Keys) { DynamicBerConverterField bf = new DynamicBerConverterField(); bf.Name = FieldNames[berpos][pos]; bf.FieldType = FieldTypes[berpos][pos]; bf.Value = Convert.ChangeType(decoded[pos], bf.FieldType); if (bf.FieldType == typeof(string)) { bf.Value = ((string)bf.Value).Replace("\0", String.Empty); } // \0 -> nothing returned due to missing perms? ret.Add(bf); } } catch (Exception ex) { ex.ToDummy(); } } return(ret); }
private void RemoveFieldsFromList(List <string> valNames) { foreach (string name in valNames) { try { DynamicBerConverterField retfield = Fields.Where(f => String.Equals(f.Name, name, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault(); if (retfield != null) { Fields.Remove(retfield); } } catch (Exception ex) { ex.ToDummy(); } } }
private object GetValueFromList(string valName) { object ret = (int)0; try { DynamicBerConverterField retfield = Fields.Where(f => String.Equals(f.Name, valName, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault(); if (retfield != null) { if (retfield.Value != null) { ret = retfield.Value; } } } catch (Exception ex) { ex.ToDummy(); } return(ret); }