一个函数具有不同的返回类型......可能与泛型?

时间:2008-12-25 16:27:02

标签: c# .net generics

我有一些程序,为简单起见,如下所示:

public string FetchValueAsString(string key)
public int FetchValueAsInteger(string key)
public bool FetchValueAsBoolean(string key)
public DateTime FetchValueAsDateTime(string key)

我知道我可以只有一个返回和对象类型的方法,只是进行转换,但我想知道是否有一种方法可以只调用一个方法,并以某种方式使用泛型来确定返回值。 ..可能吗?

3 个答案:

答案 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)

将是你想要做的。