Esempio n. 1
0
        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;
                }
            }
        }