コード例 #1
0
        public static string Serialize(IExtendedDatas instance, Type typeBase)
        {
            if (instance == null)
            {
                throw new NullReferenceException(nameof(instance));
            }

            var propertiesToExcludes = TypeDiscovery.Instance.GetProperties(typeBase);

            var result = JObject.FromObject(instance);

            foreach (var item in propertiesToExcludes)
            {
                if (result.ContainsKey(item.Name))
                {
                    result.Remove(item.Name);
                }
            }

            var u = Serialize(instance.ExtendedDatas());

            result.Merge(u);

            return(result.ToString(Newtonsoft.Json.Formatting.None));
        }
コード例 #2
0
        public static void Deserialize(IExtendedDatas instance, string text)
        {
            if (instance == null)
            {
                throw new NullReferenceException(nameof(instance));
            }

            Type type = instance.GetType();

            var list = TypeDiscovery.Instance.GetProperties(type);

            JObject o = JObject.Parse(text);

            foreach (var item in o)
            {
                if (!list.ContainsKey(item.Key))
                {
                    if (item.Value is JValue v)
                    {
                        instance.ExtendedDatas().Add(item.Key, v.Value.ToString());
                    }

                    else if (item.Value is JObject ob)
                    {
                        DynObject d = new DynObject();
                        instance.ExtendedDatas().Add(item.Key, d);
                        Deserialize(ob, d);
                    }

                    else if (item.Value is JArray a)
                    {
                        DynObject d = new DynObject();
                        instance.ExtendedDatas().Add(item.Key, d);
                        Deserialize(a, d);
                    }
                }
            }
        }
コード例 #3
0
 public void DeserializeExtendedDatas(string payload, IExtendedDatas instance)
 {
     TypeDiscovery.Instance.PopulateObject(payload, instance);
     DynObjectSerializer.Deserialize(instance, payload);
 }