【发布时间】:2020-12-20 14:27:24
【问题描述】:
我需要通过反射调用方法。但问题是我不想找到一种方法,我想在运行时使用参数对其进行评估。这是我尝试做的:
class Program
{
static void Main(string[] args)
{
var type = typeof(Test<int>);
type.InvokeMember("Write", BindingFlags.Instance | BindingFlags.Public | BindingFlags.InvokeMethod,
null, new Test<int>(), new object[] {1, "1"});
// The next call fails
type.InvokeMember("Write", BindingFlags.Instance | BindingFlags.Public | BindingFlags.InvokeMethod,
null, new Test<int>(), new object[] { 2, 2 });
}
}
public class Test<T>
{
public void Write(T arg1, string arg2)
{
Console.Write(arg1);
Console.Write(arg2);
Console.WriteLine(" write1");
}
public void Write<T2>(T arg1, T2 arg2)
{
Console.Write(arg1);
Console.Write(arg2);
Console.WriteLine(" write2");
}
}
第一个调用工作正常,但第二个调用生成一个异常,指出未找到 Write()。我可以使用 InvokeMember 调用它吗?我不想尝试查找所有方法,然后调用 MakeGenericMethod() 之类的方法
【问题讨论】:
标签: c# .net .net-core reflection