private object DeserializeObjectPropertyInternal(Enum property, string rawValue) { var cache = ObjectPropertyParser.GetPropertyInfoViaTypeLookup(property); var rawName = ObjectPropertyParser.GetObjectPropertyNameViaCache(property, cache); return(XmlReflectionSerializerImpl.DeserializeRawPropertyValue(property, rawName, rawValue)); }
public static object DeserializeRawPropertyValue(Enum property, string rawName, string rawValue) { var typeLookup = property.GetEnumAttribute <TypeLookupAttribute>().Class; var deserializer = new XmlReflectionSerializerImpl(typeLookup); var elementName = $"{HtmlParser.DefaultPropertyPrefix}{rawName.TrimEnd('_')}"; var xml = new XDocument( new XElement("properties", new XElement(elementName, rawValue) ) ); var settings = deserializer.Deserialize(xml, elementName, null); var value = settings.GetTypeCache().Properties.First(p => p.Property.Name == property.ToString()).Property.GetValue(settings); if (value == null && rawValue != string.Empty) { return(rawValue); } return(value); }
public void Update <T>(XmlReader reader, T target) { var serializer = new XmlReflectionSerializerImpl(target.GetType()); serializer.DeserializeExisting(XDocument.Load(reader), target); }