将默认类型设置为泛型调用方方法C#

将默认类型设置为泛型调用方方法C#,c#,generics,C#,Generics,我需要创建一个返回任何类型的泛型方法 我的代码如下 //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

我需要创建一个返回任何类型的泛型方法

我的代码如下

//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")
//我的被调用方方法
公共T getVal(字符串键)
{
字符串结果=ConfigurationManager.AppSettings[key].ToString();
返回字符串.IsNullOrEmpty(结果)?(T)(对象)结果:默认值(T);
}
//我的来电者
getval(“somekey”);
getval(“somekey1”);
getval(“somekey2”)
上面的电话没问题。。 但是,我的要求是需要为被调用方方法设置默认类型(例如:string)。

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
eg:getval(“somekey”);//被调用方默认情况下应将T视为字符串,并返回字符串类型。
getval(“somekey2”)//这是对返回int类型的同一被调用方的正常调用

添加此重载实现:

public string GetVal(string key)
{
    return GetVal<string>(key);
}
公共字符串GetVal(字符串键)
{
返回GetVal(键);
}

感谢Lee的修复!过载,而不是覆盖。感谢快速响应。但是我需要使用相同的泛型方法,如果我没有提到的话,应该考虑字符串为默认值。如果您提到使用的类型,将调用泛型实现,否则,将调用此实现,并使用字符串T调用泛型实现。如果您希望在未指定类型的情况下使用其他逻辑,请更改此重载。据我所知,您无法为泛型方法设置默认的T类型,该方法无法正常工作:如果
T
不是
string
result
为null或空字符串,您将得到
NullReferenceException
InvalidCastException
。您不能将字符串强制转换为
t
,您必须转换(解析)它。您可能还希望反转空或空检查,并考虑在这种情况下使用泛型是否真的有用。