C# 动态替换方法名
我有一个方法GetData(),我想基于字符串参数动态地交换它的名称 第一件事是从字符串参数MethodName中获取方法C# 动态替换方法名,c#,reflection,C#,Reflection,我有一个方法GetData(),我想基于字符串参数动态地交换它的名称 第一件事是从字符串参数MethodName中获取方法 var methodinfo = repository.GetType().GetMethod("MethodName"); 现在,如何用methodinfo中提取的动态值替换下面的GetData()方法 var argumentType = repository.GetData().GetType().GetGenericArguments()[0]; 我尝试过类似的
var methodinfo = repository.GetType().GetMethod("MethodName");
现在,如何用methodinfo中提取的动态值替换下面的GetData()方法
var argumentType = repository.GetData().GetType().GetGenericArguments()[0];
我尝试过类似的方法,但没有成功:
var argumentType = methodinfo.GetType().GetGenericArguments()[0];
如果我正确理解你的问题,你需要这样的东西:
public class ProgChoice
{
public static void ProgSelection()
{
Assembly assembly = Assembly.GetExecutingAssembly();
Type t = assembly.GetType("ProgChoice.ProgSelection", false, true);
string lcProgStr = "Prog";
int liProgNumb = 4;
// Concatenate the 2 strings
lcProgStr = lcProgStr + liProgNumb.ToString();
MethodInfo method = t.GetMethod(lcProgStr);
method.Invoke(null, null);
Console.ReadKey();
}
}
你想完成什么?我已经看过你的问题好几次了,老实说,我一点也不糊涂。如果你真的想在运行时更改方法的名称,那就忘了它吧。你不能。让我们知道你正在尝试做什么,也许我们可以给你正确的方向。请发布你想要实现的,可能有比动态更改方法名称更好的方法(这是非常不寻常的)。我将把这标记为一个答案;然而,在我的例子中,我必须将repository作为参数传递给method.Invoke(repository,null)。因此最终结果是:var argumentType=methodinfo.Invoke(repository,null).GetType().GetGenericArguments()[0];