diff --git a/Assets/VRM/UniJSON/Scripts/GenericCast.cs b/Assets/VRM/UniJSON/Scripts/GenericCast.cs index 890172611..fafc29bd2 100644 --- a/Assets/VRM/UniJSON/Scripts/GenericCast.cs +++ b/Assets/VRM/UniJSON/Scripts/GenericCast.cs @@ -56,10 +56,7 @@ namespace UniJSON } else { - return (Func)((S s) => - { - return (T)mi.Invoke(null, new object[] { s }); - }); + return GenericInvokeCallFactory.StaticFunc(mi); } } diff --git a/Assets/VRM/UniJSON/Scripts/JsonSchemaValidator/JsonEnumValidator.cs b/Assets/VRM/UniJSON/Scripts/JsonSchemaValidator/JsonEnumValidator.cs index 4cd4ec7d8..2559e3ee6 100644 --- a/Assets/VRM/UniJSON/Scripts/JsonSchemaValidator/JsonEnumValidator.cs +++ b/Assets/VRM/UniJSON/Scripts/JsonSchemaValidator/JsonEnumValidator.cs @@ -319,9 +319,11 @@ namespace UniJSON var mi = typeof(Enum).GetMethods(BindingFlags.Static | BindingFlags.Public).First( x => x.Name == "Parse" && x.GetParameters().Length == 3 ); + + var enumParse = GenericInvokeCallFactory.StaticFunc(mi); s_d = x => { - var enumValue = mi.Invoke(null, new object[] { typeof(U), x.GetString(), true }); + var enumValue = enumParse(typeof(U), x.GetString(), true); return GenericCast.Cast(enumValue); }; } diff --git a/Assets/VRM/UniJSON/Scripts/JsonSchemaValidator/JsonObjectValidator.cs b/Assets/VRM/UniJSON/Scripts/JsonSchemaValidator/JsonObjectValidator.cs index e0a026014..2c584e181 100644 --- a/Assets/VRM/UniJSON/Scripts/JsonSchemaValidator/JsonObjectValidator.cs +++ b/Assets/VRM/UniJSON/Scripts/JsonSchemaValidator/JsonObjectValidator.cs @@ -338,7 +338,7 @@ namespace UniJSON BindingFlags.Static | BindingFlags.NonPublic) ; var g = mi.MakeGenericMethod(fi.FieldType); - return (FieldValidator)g.Invoke(null, new object[] { fi }); + return GenericInvokeCallFactory.StaticFunc(g)(fi); } static FieldValidator _CreateFieldValidator(FieldInfo fi) @@ -498,7 +498,7 @@ namespace UniJSON var mi = typeof(Serializer).GetMethod("_CreateFieldSerializer", BindingFlags.Static | BindingFlags.NonPublic); var g = mi.MakeGenericMethod(fi.FieldType); - return (FieldSerializer)g.Invoke(null, new object[] { fi }); + return GenericInvokeCallFactory.StaticFunc(g)(fi); } static FieldSerializer _CreateFieldSerializer(FieldInfo fi)