2008-12-25 57 views
4

我有几个程序,为简单起见,如下所示:具有不同返回类型的一种功能...可能与泛型有关吗?

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

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

回答

12
public static T FetchValue<T>(string key) 
{ 
    string value; 
    // logic to set value here 
    // ... 
    return (T)Convert.ChangeType(value, typeof(T), CultureInfo.InvariantCulture); 
} 
+0

这工作完美...谢谢! – mattruma 2008-12-25 17:56:38

2

我假设你正在用C#编写代码。如果你是,那么你可以做你说什么这样的:

public T FetchValueAsType<T>(string key) 

你可以这样调用的版本是这样的:

FetchValueAsType<int>(key); 

话虽这么说,通过框架提供的System.Convert类的工作只是并且具有相似的语法。你可以在这里找到MSDN文章吧: http://msdn.microsoft.com/en-us/library/system.convert.aspx

1

这是可能的,但不知道该方法的实现,这是很难说是否有东西可以得到的,或者如果它是真正的/易于实现作为一种通用的。

无论如何:

public T FetchValue<T>(string key) 

将是你希望做什么。

相关问题