using System; using System.Collections.Generic; using NzbDrone.Common; using NzbDrone.Common.Reflection; using NzbDrone.Core.Annotations; namespace NzbDrone.Api.ClientSchema { public static class SchemaDeserializer { public static T DeserializeSchema(T model, List fields) { var properties = model.GetType().GetSimpleProperties(); foreach (var propertyInfo in properties) { var fieldAttribute = propertyInfo.GetAttribute(false); if (fieldAttribute != null) { var field = fields.Find(f => f.Name == propertyInfo.Name); if (propertyInfo.PropertyType == typeof (Int32)) { var intValue = Convert.ToInt32(field.Value); propertyInfo.SetValue(model, intValue, null); } else if (propertyInfo.PropertyType == typeof(Nullable)) { var intValue = field.Value.ToString().ParseInt32(); propertyInfo.SetValue(model, intValue, null); } else { propertyInfo.SetValue(model, field.Value, null); } } } return model; } } }