我需要创建一个通用的方法,可以返回任何类型。
我的代码如下:
我的代码如下:
//my callee method
public T getVal<T>(string key)
{
string result = ConfigurationManager.AppSettings[key].ToString();
return string.IsNullOrEmpty(result) ? (T)(object)result : default(T);
}
// and my caller's
getval<string>("somekey");
getval<int>("somekey1");
getval<bool>("somekey2")
上述调用运行良好。 但是,我的要求是我需要将默认类型(例如:字符串)设置为被调用方法。
eg: getval("somekey"); // callee should consider T as string by default and returns string type.
getval<int>("somekey2") //this is a normal call to the same callee which returns int type
T
不是string
,并且result
为null或空字符串,你会得到一个NullReferenceException
或InvalidCastException
。你不能只是将一个字符串强制转换为T
,你需要将其转换(解析)。你可能还想反转那个null或空检查,并考虑在这种情况下使用泛型是否真的有用。 - Pieter Witvoet