【发布时间】:2010-10-06 08:28:41
【问题描述】:
我有这个代码 sn-p 我想简化:
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<T>。我尝试传递一个 System.Type 实例,但没有成功。
我遇到了一个类似问题的答案: Pass An Instantiated System.Type as a Type Parameter for a Generic Class
我检查过,发现 MethodInfo 类中有一个 MakeGenericMethod。 问题是,我不知道如何将“CreateSimpleRows”转换为 MethodInfo 实例。
我想实现的目标有可能吗? 提前感谢您的回复。
【问题讨论】:
-
当然这很酷,如果你的目标是“简化”我会远离反思。
-
@jdv 是的,现在使用反射破坏了我简化的意图,这让我很震惊。感谢您指出这一点。
标签: reflection c#-3.0 c#-2.0 generics