/// <summary> /// Check and set attribute based on attributes dictionary /// </summary> /// <param name="attribute"></param> /// <param name="value"></param> private void SetAttribute(CVParam cvParam, Scan scan, Precursor precursor) { string member = ""; object o = null; if (scanAttrs.ContainsKey(cvParam.Name)) { member = scanAttrs[cvParam.Name]; o = scan; } else if (precursorAttrs.ContainsKey(cvParam.Name)) { member = precursorAttrs[cvParam.Name]; o = precursor; } if (member == "") { return; } var prop = o.GetType().GetProperty(member); var value = Convert.ChangeType(cvParam.Value, prop.PropertyType); prop.SetValue(o, value); }
// Reads a CV param tag into the CVParam struct // <cvParam cvRef="PSI-MS" accession="MS:1000045" // name="collision energy" value="24.46" // unitCvRef="UO" unitAccession="UO:0000266" unitName="electronvolt"/> private CVParam ReadCVParam() { var data = new CVParam(); while (Reader.MoveToNextAttribute()) { switch (Reader.Name) { case "cvRef": data.CVRef = Reader.Value; break; case "accession": data.Accession = Reader.Value; break; case "name": data.Name = Reader.Value; break; case "value": data.Value = Reader.Value; break; case "unitCvRef": data.UnitCvRef = Reader.Value; break; case "unitAccession": data.UnitAccession = Reader.Value; break; case "unitName": data.UnitName = Reader.Value; break; } } return(data); }