我需要创建一个返回任何类型的泛型方法。设置默认类型为通用调用方法C#
我的代码如下
//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
这方法不很好地工作:你会得到一个'NullReferenceException'或'InvalidCastException'如果'T'不是'string'和'结果'为空或空字符串。你不能只是将一个字符串转换为'T',你必须转换(解析)它。您可能也想要反转那个空或空的检查,并考虑在这种情况下使用泛型实际上是否有用。 –