2009-02-10 49 views
0

我还在学习VB.NET,通常我只是在谷歌我的问题,但这次我真的不知道该找什么,所以我会在这里尝试。在VB.NET中编写缓存功能

尝试编写一个将缓存键作为参数并返回缓存对象的函数。没有问题,但我无法弄清楚如何将该类型传递给与TryCast一起使用的函数,以便我不必使用返回的结果来执行此操作。

这是我的功能到目前为止,???将被替换为以某种方式传递给函数的类型。

Public Function GetCache(ByVal tag As String) As Object 
    Dim obj As Object = Nothing 
    Dim curCache As Object = TryCast(System.Web.HttpContext.Current.Cache(tag), ???) 
    If Not IsNothing(curCache) Then 
     Return curCache 
    Else 
     Return Nothing 
    End If 
End Function 

我这样做完全错误还是我只是想念什么?

回答

0

使用一般:

Public Function GetCache(Of T)(ByVal tag As String) As T 
    Return CType(System.Web.HttpContext.Current.Cache(tag), T) 
End Function 

更新:
编辑使用CTYPE,因为trycast只引用类型的作品。但是,如果投射失败,这可能会引发异常。您可以处理例外情况,在投射前检查类型,或将代码限制为像这样的参考类型:

Public Function GetCache(Of T As Class)(ByVal tag As String) As T 
    Return TryCast(System.Web.HttpContext.Current.Cache(tag), T) 
End Function 
+0

Thanks!但我实际上已经尝试过,它与DirectCast一起工作,但与TryCast无关,它说'TryCast'操作数必须是类受限类型参数,但'T'没有类常量。 – 2009-02-10 19:57:21