Esempio n. 1
0
 public object HeapDeresolve(XElement serialized)
 {
     if (serialized == null || XMLUtility.IsNullOf(serialized))
     {
         return(null);
     }
     return(HeapDeresolve(serialized, ResolversManager.GetResolver(serialized.Name.LocalName)));
 }
Esempio n. 2
0
        /// <summary>
        /// Десериализирует объект, наиболее подходящим для него способом.
        /// Допускается значение соответствеющие* значению NULL.
        ///
        /// *xml-узел должен иметь вид <NULL />. Значение NULL для самого узла serializedObject недопустимо
        /// </summary>
        /// <param name="serializedObject"></param>
        /// <returns></returns>
        public object AutoDeresolve(XElement serializedObject)
        {
            if (XMLUtility.IsNullOf(serializedObject))
            {
                return(null);
            }

            var conventionType = serializedObject.Name.LocalName;
            var type           = TypeManager.TypeOf(conventionType);
            var resolver       = ResolversManager.GetResolver(conventionType);

            if (SerializationUtility.Targeting.IsSaveReferenceInternal(type))
            {
                return(HeapDeresolve(serializedObject, resolver));
            }
            else
            {
                object instance = resolver.GetTemplateInstance(serializedObject);
                DeresolveInternal(serializedObject, ref instance, resolver);
                return(instance);
            }
        }