public List <ItemInfo> ToSerializable(MusicalInstrument instrument) { var itemList = new List <ItemInfo>(); Type type = instrument.GetType(); itemList.Add(new ItemInfo { Type = type.Name, Value = instrument.Value }); foreach (PropertyInfo property in type.GetProperties()) { if (property.Name != "Value") { itemList.Add(new ItemInfo { Type = property.Name, Value = ((Description)property.GetValue(instrument, null))?.Value }); } } return(itemList); }
//Initializes certain field. private void InitializeField(MusicalInstrument instrument, string name, string value) { var fieldInfo = instrument.GetType().GetProperty(name); fieldInfo.SetValue(instrument, new Description() { Value = value }); }
//Initializing instrument description from already created instrument object. public void Initialize(List <ItemInfo> itemInfo, MusicalInstrument instrument) { foreach (ItemInfo item in itemInfo) { if (item == itemInfo.First()) { continue; } PropertyInfo fieldInfo = instrument.GetType().GetProperty(item.Type); string value = (fieldInfo.GetValue(instrument) as Description).Value; if (value != null) { item.Value = value; } } }