Replace Invoke with GenericInvokeCallFactory

This commit is contained in:
ousttrue
2019-02-02 18:36:37 +09:00
parent 431a53230f
commit a5800d5937
3 changed files with 6 additions and 7 deletions

View File

@@ -56,10 +56,7 @@ namespace UniJSON
}
else
{
return (Func<S, T>)((S s) =>
{
return (T)mi.Invoke(null, new object[] { s });
});
return GenericInvokeCallFactory.StaticFunc<S, T>(mi);
}
}

View File

@@ -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<Type, string, bool, object>(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<object, U>.Cast(enumValue);
};
}

View File

@@ -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<FieldInfo, FieldValidator>(g)(fi);
}
static FieldValidator _CreateFieldValidator<U>(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<FieldInfo, FieldSerializer>(g)(fi);
}
static FieldSerializer _CreateFieldSerializer<U>(FieldInfo fi)