Example #1
0
        private ReferencedObj SerializeFirstRef(object obj, ObjInfo info)
        {
            var obj2 = new ReferencedObj();

            info.FirstRef = obj2;
            var type = obj.GetType();

            obj2.Type = type.FullName;
            var obj3 = obj.As <JsObject>();

            if (obj is IList)
            {
                var list = obj.As <IList>();
                obj2.ListItems = new JsArray();
                foreach (var item in list)
                {
                    var item2 = Serialize2(item);
                    obj2.ListItems.push(item2);
                }
            }
            else
            {
                foreach (var p in obj3)
                {
                    if (IgnoreFields[p])
                    {
                        continue;
                    }
                    if (!obj3.hasOwnProperty(p))
                    {
                        continue;
                    }
                    var value = obj3[p];
                    obj2[p] = Serialize2(value);
                }
            }
            return(obj2);
        }
Example #2
0
 TypedObj SerializeRefOrContent(object obj)
 {
     if (!ObjInfos.ContainsKey(obj))
     {
         var info = new ObjInfo();
         ObjInfos.Add(obj, info);
         SerializeFirstRef(obj, info);
         return(info.FirstRef);
     }
     else
     {
         var info = ObjInfos[obj];
         if (info.Ref == null)
         {
             RefIndex++;
             info.Ref = new ObjRef {
                 Key = RefIndex.ToString(), Type = "ObjRef"
             };
             info.FirstRef.RefKey = info.Ref.Key;
         }
         return(info.Ref);
     }
 }