示例#1
0
        private object DeserializeObjectPropertyInternal(Enum property, string rawValue)
        {
            var cache   = ObjectPropertyParser.GetPropertyInfoViaTypeLookup(property);
            var rawName = ObjectPropertyParser.GetObjectPropertyNameViaCache(property, cache);

            return(XmlReflectionSerializerImpl.DeserializeRawPropertyValue(property, rawName, rawValue));
        }
示例#2
0
        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);
        }
示例#3
0
        public void Update <T>(XmlReader reader, T target)
        {
            var serializer = new XmlReflectionSerializerImpl(target.GetType());

            serializer.DeserializeExisting(XDocument.Load(reader), target);
        }