This commit is contained in:
2026-05-08 04:32:01 +03:30
parent 69d2625828
commit 507dd2862d
+8 -18
View File
@@ -14,20 +14,17 @@ namespace xCommons.Helpers
/// <param name="source"></param>
/// <param name="methodName"></param>
/// <param name="runtimeType"></param>
/// <param name="bindingAttr"></param>
/// <param name="args"></param>
public static void InvokeGenericMethod(
this Type source,
string methodName,
Type runtimeType,
BindingFlags bindingAttr = BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic,
params object[] args
)
{
//
var overLoads = source.GetGenericMethodInfo(
methodName: methodName,
bindingAttr: bindingAttr
methodName: methodName
);
if (!overLoads.HasChild())
{
@@ -39,15 +36,7 @@ namespace xCommons.Helpers
MethodInfo genericMethod = method.MakeGenericMethod(runtimeType);
//
var gParams = new object[]
{
source
}
.Concat(args)
.ToArray();
//
genericMethod.Invoke(null, gParams);
genericMethod.Invoke(null, args);
}
/// <summary>
@@ -55,17 +44,18 @@ namespace xCommons.Helpers
/// </summary>
/// <param name="source"></param>
/// <param name="methodName"></param>
/// <param name="bindingAttr"></param>
/// <returns></returns>
public static List<MethodInfo> GetGenericMethodInfo(
this Type source,
string methodName,
BindingFlags bindingAttr = BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic
string methodName
)
{
//
var result = source
.GetMethods(bindingAttr)
var methods = source
.GetMethods();
//
var result = methods
.Where(mi =>
mi.Name == methodName &&
mi.IsGenericMethodDefinition)