如果我正确理解你,这应该说明你在做什么。魔法在makegenericmethod中。
using System;
class Program {
static void Main(string[] args) {
var meth = typeof(Program).GetMethod("Meth");
var items = new[] {
new { a = (object)"hi", b = (object)1 },
new { a = (object)TimeSpan.MaxValue, b = (object)DateTime.UtcNow },
};
foreach (var item in items) {
var gmeth = meth.MakeGenericMethod(item.a.GetType(), item.b.GetType());
gmeth.Invoke(null, new[] { item.a, item.b });
}
}
public static void Meth<A, B>(A a, B b) {
Console.WriteLine("<{0}, {1}>", typeof(A).Name, typeof(B).Name);
}
}
输出:
<String, Int32>
<TimeSpan, DateTime>