public object HeapDeresolve(XElement serialized) { if (serialized == null || XMLUtility.IsNullOf(serialized)) { return(null); } return(HeapDeresolve(serialized, ResolversManager.GetResolver(serialized.Name.LocalName))); }
/// <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); } }