我有一些程序,为简单起见,如下所示:
public string FetchValueAsString(string key)
public int FetchValueAsInteger(string key)
public bool FetchValueAsBoolean(string key)
public DateTime FetchValueAsDateTime(string key)
我知道我可以只有一个返回和对象类型的方法,只是进行转换,但我想知道是否有一种方法可以只调用一个方法,并以某种方式使用泛型来确定返回值。 ..可能吗?
答案 0 :(得分:12)
public static T FetchValue<T>(string key)
{
string value;
// logic to set value here
// ...
return (T)Convert.ChangeType(value, typeof(T), CultureInfo.InvariantCulture);
}
答案 1 :(得分:2)
我假设您在C#中编写代码。如果你那么你就可以像这样做你所说的话:
public T FetchValueAsType<T>(string key)
然后你会调用这样的版本:
FetchValueAsType<int>(key);
话虽如此,框架提供的System.Convert
类也同样有效,并且语法相似。你可以在这里找到关于它的msdn文章:
http://msdn.microsoft.com/en-us/library/system.convert.aspx
答案 2 :(得分:1)
这是可能的,但是如果不知道方法的实现,就很难说是否有某些东西可以获得,或者它是否真的/可以作为通用实现。
无论如何:
public T FetchValue<T>(string key)
将是你想要做的。