mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-10-25 19:57:54 -05:00
fix AOT
This commit is contained in:
@@ -29,6 +29,15 @@ namespace UniJSON
|
||||
f.Value(new ArraySegment<Byte>(bytes));
|
||||
}
|
||||
|
||||
public static void Value(this IFormatter f, UnityEngine.Vector2 v)
|
||||
{
|
||||
//CommaCheck();
|
||||
f.BeginMap(2);
|
||||
f.Key("x"); f.Value(v.x);
|
||||
f.Key("y"); f.Value(v.y);
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
public static void Value(this IFormatter f, UnityEngine.Vector3 v)
|
||||
{
|
||||
//CommaCheck();
|
||||
@@ -39,6 +48,17 @@ namespace UniJSON
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
public static void Value(this IFormatter f, UnityEngine.Vector4 v)
|
||||
{
|
||||
//CommaCheck();
|
||||
f.BeginMap(4);
|
||||
f.Key("x"); f.Value(v.x);
|
||||
f.Key("y"); f.Value(v.y);
|
||||
f.Key("z"); f.Value(v.z);
|
||||
f.Key("w"); f.Value(v.w);
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
static MethodInfo GetMethod<T>(Expression<Func<T>> expression)
|
||||
{
|
||||
var method = typeof(FormatterExtensions).GetMethod("Serialize");
|
||||
|
||||
@@ -78,8 +78,10 @@ namespace UniJSON
|
||||
{
|
||||
delegate void Serializer(IFormatter f, T t);
|
||||
|
||||
static Action<IFormatter, T> GetSerializer(Type t)
|
||||
static Action<IFormatter, T> GetSerializer()
|
||||
{
|
||||
var t = typeof(T);
|
||||
|
||||
// object
|
||||
if (typeof(T) == typeof(object) && t.GetType() != typeof(object))
|
||||
{
|
||||
@@ -166,7 +168,7 @@ namespace UniJSON
|
||||
{
|
||||
if (s_serializer == null)
|
||||
{
|
||||
s_serializer = new Serializer(GetSerializer(typeof(T)));
|
||||
s_serializer = new Serializer(GetSerializer());
|
||||
}
|
||||
s_serializer(f, t);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
@@ -9,7 +9,7 @@ namespace UniJSON
|
||||
public static class GenericDeserializer<T, U>
|
||||
where T : IListTreeItem, IValue<T>
|
||||
{
|
||||
static V[] GenericArrayDeserializer<V>(ListTreeNode<T> s)
|
||||
public static V[] GenericArrayDeserializer<V>(ListTreeNode<T> s)
|
||||
{
|
||||
if (!s.IsArray())
|
||||
{
|
||||
@@ -24,7 +24,7 @@ namespace UniJSON
|
||||
return u;
|
||||
}
|
||||
|
||||
static List<V> GenericListDeserializer<V>(ListTreeNode<T> s)
|
||||
public static List<V> GenericListDeserializer<V>(ListTreeNode<T> s)
|
||||
{
|
||||
if (!s.IsArray())
|
||||
{
|
||||
@@ -40,7 +40,7 @@ namespace UniJSON
|
||||
return u;
|
||||
}
|
||||
|
||||
static object DefaultDictionaryDeserializer(ListTreeNode<T> s)
|
||||
public static object DefaultDictionaryDeserializer(ListTreeNode<T> s)
|
||||
{
|
||||
switch (s.Value.ValueType)
|
||||
{
|
||||
@@ -82,7 +82,7 @@ namespace UniJSON
|
||||
/// <typeparam name="V"></typeparam>
|
||||
/// <param name="s"></param>
|
||||
/// <returns></returns>
|
||||
static Dictionary<string, V> DictionaryDeserializer<V>(ListTreeNode<T> s)
|
||||
public static Dictionary<string, V> DictionaryDeserializer<V>(ListTreeNode<T> s)
|
||||
{
|
||||
var d = new Dictionary<string, V>();
|
||||
foreach (var kv in s.ObjectItems())
|
||||
@@ -146,7 +146,7 @@ namespace UniJSON
|
||||
if (target.IsArray)
|
||||
{
|
||||
var mi = typeof(GenericDeserializer<T, U>).GetMethod("GenericArrayDeserializer",
|
||||
BindingFlags.Static | BindingFlags.NonPublic);
|
||||
BindingFlags.Static | BindingFlags.Public);
|
||||
var g = mi.MakeGenericMethod(target.GetElementType());
|
||||
return GenericInvokeCallFactory.StaticFunc<ListTreeNode<T>, U>(g);
|
||||
}
|
||||
@@ -156,7 +156,7 @@ namespace UniJSON
|
||||
if (target.GetGenericTypeDefinition() == typeof(List<>))
|
||||
{
|
||||
var mi = typeof(GenericDeserializer<T, U>).GetMethod("GenericListDeserializer",
|
||||
BindingFlags.Static | BindingFlags.NonPublic);
|
||||
BindingFlags.Static | BindingFlags.Public);
|
||||
var g = mi.MakeGenericMethod(target.GetGenericArguments());
|
||||
return GenericInvokeCallFactory.StaticFunc<ListTreeNode<T>, U>(g);
|
||||
}
|
||||
@@ -165,7 +165,7 @@ namespace UniJSON
|
||||
{
|
||||
|
||||
var mi = typeof(GenericDeserializer<T, U>).GetMethod("DefaultDictionaryDeserializer",
|
||||
BindingFlags.Static | BindingFlags.NonPublic);
|
||||
BindingFlags.Static | BindingFlags.Public);
|
||||
return GenericInvokeCallFactory.StaticFunc<ListTreeNode<T>, U>(mi);
|
||||
}
|
||||
else
|
||||
@@ -173,7 +173,7 @@ namespace UniJSON
|
||||
target.GetGenericArguments()[0] == typeof(string))
|
||||
{
|
||||
var mi = typeof(GenericDeserializer<T, U>).GetMethod("DictionaryDeserializer",
|
||||
BindingFlags.Static | BindingFlags.NonPublic);
|
||||
BindingFlags.Static | BindingFlags.Public);
|
||||
var g = mi.MakeGenericMethod(target.GetGenericArguments()[1]);
|
||||
return GenericInvokeCallFactory.StaticFunc<ListTreeNode<T>, U>(g);
|
||||
}
|
||||
|
||||
@@ -286,5 +286,22 @@ namespace UniJSON
|
||||
{
|
||||
return new JsonDictionaryValidator<T>();
|
||||
}
|
||||
|
||||
#region AOT
|
||||
public static JsonDictionaryValidator<Single> CreateSingle()
|
||||
{
|
||||
return Create<Single>();
|
||||
}
|
||||
|
||||
public static JsonDictionaryValidator<Int32> CreateInt32()
|
||||
{
|
||||
return Create<Int32>();
|
||||
}
|
||||
|
||||
public static JsonDictionaryValidator<Boolean> CreateBoolean()
|
||||
{
|
||||
return Create<Boolean>();
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
@@ -592,7 +592,7 @@ namespace UniJSON
|
||||
GenericSerializer<T>.Serialize(this, f, c, value);
|
||||
}
|
||||
|
||||
static class GenericDeserializer<S, T>
|
||||
public static class GenericDeserializer<S, T>
|
||||
where S : IListTreeItem, IValue<S>
|
||||
{
|
||||
delegate T Deserializer(ListTreeNode<S> src);
|
||||
@@ -610,7 +610,7 @@ namespace UniJSON
|
||||
};
|
||||
}
|
||||
|
||||
static U DeserializeField<U>(JsonSchema prop, ListTreeNode<S> s)
|
||||
public static U DeserializeField<U>(JsonSchema prop, ListTreeNode<S> s)
|
||||
{
|
||||
var u = default(U);
|
||||
prop.Validator.Deserialize(s, ref u);
|
||||
@@ -639,7 +639,7 @@ namespace UniJSON
|
||||
}
|
||||
|
||||
var mi = typeof(GenericDeserializer<S, T>).GetMethod("DeserializeField",
|
||||
BindingFlags.Static | BindingFlags.NonPublic);
|
||||
BindingFlags.Static | BindingFlags.Public);
|
||||
var g = mi.MakeGenericMethod(x.FieldType);
|
||||
|
||||
return (FieldSetter)((s, o) =>
|
||||
|
||||
Reference in New Issue
Block a user