Reflection 将实例化的System.Type作为泛型方法的类型参数传递

Reflection 将实例化的System.Type作为泛型方法的类型参数传递,reflection,c#-3.0,c#-2.0,generics,Reflection,C# 3.0,C# 2.0,Generics,我想简化以下代码片段: switch (typeString) { case "boolean": CreateSimpleRows<bool>(ref group, value); break; case "datetime": CreateSimpleRows<DateTime>(ref gro

我想简化以下代码片段:

        switch (typeString)
        {
            case "boolean":
                CreateSimpleRows<bool>(ref group, value);
                break;
            case "datetime":
                CreateSimpleRows<DateTime>(ref group, value);
                break;
            case "double":
                CreateSimpleRows<double>(ref group, value);
                break;
            case "int32":
                CreateSimpleRows<int>(ref group, value);
                break;
            case "int64":
                CreateSimpleRows<long>(ref group, value);
                break;
            case "string":
                CreateSimpleRows<string>(ref group, value);
                break;
        }
开关(类型字符串)
{
案例“布尔”:
CreateSimpleRows(参考组,值);
打破
案例“日期时间”:
CreateSimpleRows(参考组,值);
打破
“双重”情况:
CreateSimpleRows(参考组,值);
打破
案例“int32”:
CreateSimpleRows(参考组,值);
打破
案例“int64”:
CreateSimpleRows(参考组,值);
打破
大小写“字符串”:
CreateSimpleRows(参考组,值);
打破
}
该方法声明为
CreateSimpleRows
。我试图传递一个System.Type实例,但没有成功

我遇到了一个类似问题的答案:

我已经检查过了,我看到MethodInfo类中有一个MakeGenericMethod。 问题是,我不知道如何将“CreateSimpleRows”转换为MethodInfo实例

我想实现的目标是可能的吗?
提前感谢您的回复。

要获得
MethodInfo
,请拨打:

请注意,如果要获取非公共方法,则需要使用
GetMethod
的重载,该重载还需要使用
BindingFlags


不过,现在还不清楚为什么要用反射来实现这一点。虽然您当前的代码片段是重复的,但至少很容易理解。使用反射可能会使事情更容易出错,而且您仍然需要首先将
typeString
映射到
类型。

要获得
MethodInfo
,您需要调用:

请注意,如果要获取非公共方法,则需要使用
GetMethod
的重载,该重载还需要使用
BindingFlags


不过,现在还不清楚为什么要用反射来实现这一点。虽然您当前的代码片段是重复的,但至少很容易理解。使用反射可能会使事情更容易出错,而且您仍然需要首先将
typeString
映射到
Type

当然这很酷,如果您的目标是“简化”,我会远离反射。@jdv是的,现在我突然意识到使用反射违背了我简化的意图。谢谢你指出这一点。这当然很酷,如果你的目标是“简化”,我会远离反射。@jdv是的,现在我突然意识到使用反射违背了我简化的意图。谢谢你指出这一点。我知道可能是重复的。我想我最初的目的是删除代码中重复的部分。看到你对类似问题的回答,我希望这是可能的。现在我才意识到使用反射实际上违背了我的初衷。谢谢你的快速回复!:)我懂了。我想我最初的目的是删除代码中重复的部分。看到你对类似问题的回答,我希望这是可能的。现在我才意识到使用反射实际上违背了我的初衷。谢谢你的快速回复!:)
MethodInfo method = typeof(TypeContainingMethod).GetMethod("CreateSimpleRows");
MethodInfo generic = method.MakeGenericMethod(typeArgument);