C# 从app.config读取数据类型值

C# 从app.config读取数据类型值,c#,generics,config,C#,Generics,Config,我有一个通用方法SampleMethod(param1,param2),需要根据配置值调用该方法。例如: SampleMethod<long>(param1, param2); SampleMethod<Guid>(param1, param2); 当我尝试基于配置值调用此函数并将此值传递给上述方法时,如下所示: Type rangeType = Configuration.RangeType; SampleMethod<rangeType>(param1,

我有一个通用方法SampleMethod(param1,param2),需要根据配置值调用该方法。例如:

SampleMethod<long>(param1, param2);
SampleMethod<Guid>(param1, param2);
当我尝试基于配置值调用此函数并将此值传递给上述方法时,如下所示:

Type rangeType = Configuration.RangeType;
SampleMethod<rangeType>(param1, param2);
Type rangeType=Configuration.rangeType;
采样方法(参数1、参数2);
上面语句中的rangeType无法识别为类型,是否有人可以建议如何实现这一点。提前谢谢

如果“SampleMethod”方法存在于要调用它的同一类中:

this.GetType().GetGenericMethod("SampleMethod",rangeType).Invoke(null,param1, param2);

编译泛型方法调用的类型参数。你不能把一个变量放进去。如果要将类型作为参数传递给方法,请将其作为参数添加到方法中

如果您知道您有一组非常有限的类型参数,那么可以创建一组条件调用(例如,使用switch)

否则,您可以使用反射构造适当的泛型方法并调用它(如Reza的回答所示)


如果不确切知道您正在使用SampleMethod做什么,就不可能建议其他替代方法。它不起作用。

对回答您的问题没有多大帮助。你能告诉我们你到底得到了什么错误吗?你至少需要
cast
你的参数。如果这些是标准数据类型,您可以使用我的bad,not working,我的意思是,在语句中不能识别rangeType:SampleMethod(param1,param2);如果列表符合您的标准,您可以使用它。在我看来,您试图用错误的设计解决问题。你能举一个
SampleMethod
的例子吗?即使您能够像您所希望的那样传递类型,您不希望
SampleMethod
根据实际类型而有所不同吗?
this.GetType().GetGenericMethod("SampleMethod",rangeType).Invoke(null,param1, param2);