Exemple #1
0
 public object HeapDeresolve(XElement serialized)
 {
     if (serialized == null || XMLUtility.IsNullOf(serialized))
     {
         return(null);
     }
     return(HeapDeresolve(serialized, ResolversManager.GetResolver(serialized.Name.LocalName)));
 }
Exemple #2
0
 /// <summary>
 /// Десериализирует serializedObject в target.
 /// Данный метод формирует состоняеие экземпляра.
 ///
 /// Important Note: Данный метод не взаимодействет с кучами, предпологается что все необходимые
 /// манипуляции с кучами были сделаны до вызова этого метода
 /// </summary>
 /// <param name="instance">Объект в который буде производиться десериализация</param>
 /// <param name="serializedObject"></param>
 public void DeresolveTo(object target, XElement serializedObject)
 {
     //Вызов внутреннего метода
     DeresolveInternal(
         serializedObject,
         ref target,
         ResolversManager.GetResolver(TypeManager.ConventionOf(target.GetType()))
         );
 }
Exemple #3
0
 /// <summary>
 /// Сериализирует resolveObject в target.
 /// Данный метод формирует тело сериализированной версии объекта.
 ///
 /// Important Note: Данный метод не взаимодействет с кучами, предпологается что все необходимые
 /// манипуляции с кучами были сделаны до вызова этого метода
 /// </summary>
 /// <param name="resolveObject">Объект который необходиом сериализировать</param>
 /// <param name="target">xml-узел в который необходимо произвести сериализацию</param>
 public void ResolveTo(object resolveObject, XElement target)
 {
     //Вызов внутреннего метода
     ResolveToInternal(
         resolveObject,
         ResolversManager.GetResolver(TypeManager.ConventionOf(resolveObject.GetType())),
         target
         );
 }
Exemple #4
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);
            }
        }
Exemple #5
0
 /// <summary>
 /// Десериализирует xml-узел serializedObject в возвращаймый объект, используя действительный сериализатор для типа объекта serializedObject.
 /// Не допускается значение null ни для какаих входных параметров.
 /// Метод является контекстным.
 /// Обращается к банку resolver`ов для получения resolver`а
 /// </summary>
 /// <param name="serializedObject">Десериализируемый объект</param>
 /// <param name="convention">Условное обозночение типа</param>
 /// <returns>Результат десериализации</returns>
 internal void DeresolveInternal(XElement serializedObject, ref object instance, string convention)
 {
     ResolversManager.GetResolver(convention).Deserialzie(serializedObject, ref instance);
 }
Exemple #6
0
 /// <summary>
 /// Сериализирует объект resolveObject в xml-узел serializeHere используя действительный сериализатор для объектов типа conventionType
 /// Не допускается значение null ни для какаих входных параметров.
 /// Метод является контекстным.
 /// Обращается к банку resolver`ов для получения resolver`а
 /// </summary>
 /// <param name="resolveObject">Сериализируемый объект</param>
 /// <param name="conventionType">Условное обозночение типа</param>
 /// <param name="serializeHere">xml-узел в который будет записан результат сериализации</param>
 internal void ResolveToInternal(object resolveObject, string conventionType, XElement serializeHere)
 {
     ResolversManager.GetResolver(conventionType).Serialize(serializeHere, resolveObject);
 }