Ejemplo n.º 1
0
        protected override InterfaceType ImplDeserialize(
            IValueUnit valueUnit, IRepositorySerializationContext context)
        {
            if (valueUnit == null)
            {
                return(default(InterfaceType));
            }

            IValueUnit ctxVu = null;
            IValueUnit tmpVu = valueUnit;
            IValueItem tmpVi = null;

            if (tmpVu.Count == 2 && context.Metadata == context.Hierarchy.Peek())
            {
                if ((tmpVi = tmpVu ["$Metadata"]) != null &&
                    (ctxVu = tmpVi.Value as IValueUnit) != null &&
                    (tmpVi = tmpVu ["$Data"]) != null &&
                    (tmpVu = tmpVi.Value as IValueUnit) != null)
                {
                    valueUnit = tmpVu;

                    if (context.Metadata.Count == 0)
                    {
                        foreach (IValueItem ctxItem in ctxVu)
                        {
                            context.Metadata.Add(ctxItem.Key, ctxItem.Value);
                        }
                    }
                }
            }

            return(base.ImplDeserialize(valueUnit, context));
        } // End of ImplDeserialize (...)
Ejemplo n.º 2
0
        protected override ArrayType ImplDeserializeEnumerable(
            IValueSequence serialization,
            IRepositorySerializationContext context)
        {
            Object             array         = null;
            Int32              arraySize     = 0;
            Int32              idx           = 0;
            String             itemStrValue  = null;
            ICollection        coll          = null;
            IList              list          = null;
            NumericStringValue numericString = null;

            if ((coll = serialization.Value as ICollection) != null)
            {
                arraySize = coll.Count;
            }

            IEnumerator enumerator = ImplDeserializeEnumerable(
                serialization.Value, context).GetEnumerator();

            if (enumerator == null)
            {
                return(default(ArrayType));
            }
            if (!enumerator.MoveNext())
            {
                return(default(ArrayType));
            }

            array = new ArrayItemType [arraySize];

            list = array as IList;

            do
            {
                try
                {
                    if ((numericString = enumerator.Current as NumericStringValue) != null)
                    {
                        list [idx++] = numericString.ToType(typeof(ArrayItemType), null);
                    }
                    else if (Type.GetTypeCode(typeof(ArrayItemType)) == TypeCode.DateTime &&
                             (itemStrValue = enumerator.Current as String) != null)
                    {
                        list [idx++] = DateTime.ParseExact(itemStrValue, "o", null);
                    }

                    else
                    {
                        list [idx++] = enumerator.Current;
                    }
                }
                catch   { break;; }
            }while (enumerator.MoveNext());

            return((ArrayType)array);
        } // End of ImplDeserializeEnumerable (...)
        protected override void ImplWrite (
            TextWriter tw, IValueUnit source, IRepositorySerializationContext context )
        {
            if ( context.SerializeMetadata && context.Metadata != null )
                if ( source == null )
                    source = context.Metadata as IValueUnit;
                else
                {
                    IValueUnit wrapperVu = new ValueUnit ();

                    wrapperVu.Add ( "$Metadata", context.Metadata );
                    wrapperVu.Add ( "$Data", source );

                    source = wrapperVu;
                }

            base.ImplWrite ( tw, source, context );
        } // End of ImplWrite (...)
        //protected virtual Boolean ImplAddSequenceItem ( SequenceType sequence, Object item )
        //{
        //    IList list = sequence as IList;

        //    if ( list == null ) return false;

        //    try { list.Add ( item ); }
        //    catch { return false; }

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

        protected virtual SequenceType ImplDeserializeEnumerable(
            IValueSequence serialization,
            IRepositorySerializationContext context)
        {
            IEnumerator enumerator = ImplDeserializeEnumerable(
                serialization.Value, context).GetEnumerator();

            if (enumerator == null)
            {
                return(default(SequenceType));
            }
            if (!enumerator.MoveNext())
            {
                return(default(SequenceType));
            }

            return(ImplPopulateSequence(default(SequenceType), enumerator));
        } // End of ImplDeserializeEnumerable (...)
 protected override void ImplSerialize(
     out IValueSequence retVal,
     SequenceType instance,
     IRepositorySerializationContext context)
 => ImplSerializeEnumerable(out retVal, instance, context);
 protected override SequenceType ImplDeserialize(
     IValueSequence serialization,
     IRepositorySerializationContext context)
 => ImplDeserializeEnumerable(serialization, context);
Ejemplo n.º 7
0
        } // End of ImplDeserialize (...)

        protected override Boolean ImplSerializeData(IRepositorySerializationContext context)
        => context != null && context.SerializeData;