C# 动态替换方法名

C# 动态替换方法名,c#,reflection,C#,Reflection,我有一个方法GetData(),我想基于字符串参数动态地交换它的名称 第一件事是从字符串参数MethodName中获取方法 var methodinfo = repository.GetType().GetMethod("MethodName"); 现在,如何用methodinfo中提取的动态值替换下面的GetData()方法 var argumentType = repository.GetData().GetType().GetGenericArguments()[0]; 我尝试过类似的

我有一个方法GetData(),我想基于字符串参数动态地交换它的名称

第一件事是从字符串参数MethodName中获取方法

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];