Ejemplo n.º 1
0
        private static object DeserializeStart(JObject jObject)
        {
            JToken typeToken      = jObject["type"];
            JToken originToken    = jObject["origin"];
            string typeString     = typeToken.Value <string>();
            string assemblyString = originToken.Value <string>();
            string combined       = Assembly.CreateQualifiedName(assemblyString, typeString);
            Type   type           = Type.GetType(combined);

            if (type == null)
            {
                return(null);
            }
            object objInstance = null;

            if (type.IsSubclassOf(typeof(ScriptableObject)))
            {
                objInstance = ScriptableObject.CreateInstance(type);
            }
            if (objInstance == null)
            {
                objInstance = FormatterServices.GetSafeUninitializedObject(type);
            }
            if (objInstance == null)
            {
                return(null);
            }
            IAdventuresUnknownSerializeCallback auSerializeCB = objInstance as IAdventuresUnknownSerializeCallback;

            if (auSerializeCB != null)
            {
                auSerializeCB.InitializeObject();
            }
            return(objInstance);
        }
Ejemplo n.º 2
0
        public static object DeserializeFull(JObject jObject)
        {
            object result = DeserializeStart(jObject);

            if (result != null)
            {
                Type   type         = result.GetType();
                JToken contentToken = jObject["content"];

                FieldInfo[] members = GetSerializableFields(type);

                IAdventuresUnknownSerializer auSerializer = result as IAdventuresUnknownSerializer;
                if (auSerializer != null)
                {
                    auSerializer.Deserialize(contentToken);//, members);
                }
                else
                {
                    foreach (FieldInfo member in members)
                    {
                        DeserializeObject(contentToken[member.Name], member, result);
                    }
                }
                IAdventuresUnknownSerializeCallback auSerializeCB = result as IAdventuresUnknownSerializeCallback;
                if (auSerializeCB != null)
                {
                    auSerializeCB.OnAfterDeserialize();
                }
            }
            return(result);
        }
Ejemplo n.º 3
0
        public static void SerializeStart(JsonTextWriter jsonTextWriter, object obj)
        {
            IAdventuresUnknownSerializeCallback auSerializeCB = obj as IAdventuresUnknownSerializeCallback;

            if (auSerializeCB != null)
            {
                auSerializeCB.OnBeforeSerialize();
            }
            Type type = obj.GetType();

            jsonTextWriter.WriteStartObject();
            jsonTextWriter.WritePropertyName("type");
            jsonTextWriter.WriteValue(type.FullName);
            jsonTextWriter.WritePropertyName("origin");
            jsonTextWriter.WriteValue(Assembly.GetAssembly(type).GetName().Name);
            jsonTextWriter.WritePropertyName("content");
            jsonTextWriter.WriteStartObject();
        }