[英]Reading datatype value from app.config
我有一個通用方法 SampleMethod(param1, param2) ,我需要根據配置值調用該方法。 例如:
SampleMethod<long>(param1, param2);
SampleMethod<Guid>(param1, param2);
在方法調用中,類型應該更改配置值。 我需要從 app.config 文件等配置文件中獲取值。
public static Type RangeType
{
get
{
Type rangeType;
string rangeDataTypeString = ConfigurationManager.AppSettings["ShardRangeType"];
switch (rangeDataTypeString.ToUpper())
{
case "LONG":
rangeType = typeof (long);
break;
case "GUID":
rangeType = typeof (Guid);
break;
default:
rangeType = typeof (long);
break;
}
return rangeType;
}
}
當我嘗試根據配置值調用它並將此值傳遞給上述方法時,例如:
Type rangeType = Configuration.RangeType;
SampleMethod<rangeType>(param1, param2);
上面語句中的 rangeType 不能識別為類型,有人可以建議如何實現這一點。 提前致謝!
如果“SampleMethod”方法存在於您想要調用它的同一個類中:
this.GetType().GetGenericMethod("SampleMethod",rangeType).Invoke(null,param1, param2);
編譯泛型方法調用的類型參數。 您不能將變量放入其中。 如果要將 Type 作為參數傳遞給方法,請將其作為參數添加到方法中。
如果您知道自己的類型參數集非常有限,則可以創建一組條件調用(例如,使用 switch)。
否則,您可以使用反射來構造適當的泛型方法並調用它(如 Reza 的回答所示)。
如果不確切知道您正在使用 SampleMethod 做什么,就不可能提出其他關於如何做的替代方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.