Exemplo n.º 1
0
        } // End of ImplDeserializeEnumerable (...)

        protected virtual Object ImplDeserializeObject(
            IValueUnit objectVu,
            IHierarchicalMetadataSerializationContext context)
        {
            IValueUnit objCtxtLvl             = null;
            ISerializable <IValueUnit> serMgr = null;
            ValueDomObjectSerializationManagerCollection serMgrColl = null;
            ObjectSerializationManagerDescr serMgrDescr             = null;
            String     typeName  = null;
            IValueItem valueItem = null;

            if ((objCtxtLvl = context.Hierarchy.Peek() as IValueUnit) == null)
            {
                return(null);
            }

            if ((valueItem = objCtxtLvl ["SerializationManager"] as IValueItem) == null)
            {
                return(null);
            }

            if (valueItem.Value == null)
            {
                return(null);
            }

            if ((typeName = valueItem.Value.ToString()) == null)
            {
                return(null);
            }

            if ((serMgrColl = ValueDomObjectSerializationManagerCollection.Singleton) == null)
            {
                return(null);
            }

            if ((serMgrDescr = serMgrColl [typeName]) == null)
            {
                return(null);
            }

            return((serMgr = serMgrDescr.SerializationManager) == null
                        ? null : serMgr.Deserialize(objectVu, context));
        } // End of ImplDeserializeObject (...)
        protected virtual Boolean ImplDeserializeItem <ContextType> (
            out Object retVal,
            Object item,
            Func <IValueItemBase> getCurrentContextDlg,
            ContextType context)
            where ContextType : ISerializationContext
        {
            retVal = null;

            //Type                                            itemType        = null;
            //NumericStringValue                              numericString   = null;
            IConvertibleString         cnvStr = null;
            ISerializable <IValueUnit> serMgr = null;
            ValueDomObjectSerializationManagerCollection serMgrColl = null;
            ObjectSerializationManagerDescr serMgrDescr             = null;
            IValueUnit subCtxtLvl = null;
            IValueUnit subUnit    = null;
            String     typeName   = null;
            IValueItem valueItem  = null;

            if (item == null)
            {
                retVal = null;
            }
            else if (ImplIsBuiltinType(item.GetType()))
            {
                retVal = item;
            }
            //else if ( ImplIsString ( item.GetType () ) )
            //    if ( (itemType = ImplGetItemType ( context )) == null )
            //        retVal = item;
            //    else if ( itemType == typeof ( String ) )
            //        retVal = item;
            //    else
            //        retVal = ImpConvertToType ( item, itemType );
            //else if ( (numericString = item as NumericStringValue) != null )
            //    retVal = ImpConvertToType ( numericString, ImplGetItemType ( context ) );
            else if (ImplIsString(item.GetType()))
            {
                retVal = ImpConvertToType(item, ImplGetItemType(context));
            }
            else if ((cnvStr = item as IConvertibleString) != null)
            {
                retVal = ImpConvertToType(cnvStr, ImplGetItemType(context));
            }
            else if ((subUnit = item as IValueUnit) == null)
            {
                return(false);
            }
            //propValue = pd.GetValue ( InitDto );

            //if ( _DeserializeEnumerable ( ref propValue, pd, valueItem.Value, context ) )
            //    continue;
            //else
            //    propValue = valueItem.Value;
            else if (getCurrentContextDlg == null)
            {
                return(false);
            }
            else if ((subCtxtLvl = getCurrentContextDlg() as IValueUnit) == null)
            {
                return(false);
            }
            else if ((valueItem = subCtxtLvl ["SerializationManager"] as IValueItem) == null)
            {
                return(false);
            }
            else if (valueItem.Value == null)
            {
                return(false);
            }
            else if ((typeName = valueItem.Value.ToString()) == null)
            {
                return(false);
            }
            else if ((serMgrColl = ValueDomObjectSerializationManagerCollection.Singleton) == null)
            {
                return(false);
            }
            else if ((serMgrDescr = serMgrColl [typeName]) == null)
            {
                return(false);
            }
            else if ((serMgr = serMgrDescr.SerializationManager) == null)
            {
                return(false);
            }
            else
            {
                retVal = serMgr.Deserialize(subUnit, context);
            }

            return(true);
        } // End  of ImplDeserializeItem (...)