/// <summary> /// Parse json to object /// </summary> /// <param name="instance">object instance</param> /// <param name="adapter">Json Data Adapter</param> /// <param name="initType">Init FIELD or PROPERTY or All</param> /// <returns>object</returns> private static object FromJson(object instance, LsonAdapter adapter, INITTYPE initType = INITTYPE.ALL) { if (instance == null) { Debug.Log("Lson:Instance cant be null"); return(null); } Type type = instance.GetType(); FieldInfo[] fieldInfos = type.GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public); PropertyInfo[] propertyInfos = type.GetProperties(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public); switch (initType) { case INITTYPE.ALL: SetValues(adapter, instance, fieldInfos); SetValues(adapter, instance, propertyInfos); break; case INITTYPE.FIELD: SetValues(adapter, instance, fieldInfos); break; case INITTYPE.PROPERTY: SetValues(adapter, instance, propertyInfos); break; } if (typeof(ILsonBean).IsAssignableFrom(type)) { type.GetMethod("AfterInit").Invoke(instance, null); } return(instance); }
/// <summary> /// Parse json to object /// </summary> /// <typeparam name="T">Type</typeparam> /// <param name="adapter">Json Data Adapter</param> /// <param name="initType">Init FIELD or PROPERTY or All</param> /// <returns>object</returns> public static T FormJsonByLsonAttribute <T>(LsonAdapter adapter, INITTYPE initType = INITTYPE.ALL) { T instance = System.Activator.CreateInstance <T>(); FormJsonByLsonAttribute(instance, adapter, initType); return(instance); }