Написание функции кеша в VB.NET - PullRequest
0 голосов
/ 10 февраля 2009

Я все еще пользуюсь VB.NET и обычно просто задаю свои вопросы в Google, но на этот раз я действительно не знаю, что искать, поэтому попробую здесь.

Попытка написать функцию, которая принимает ключ кэша в качестве параметра и возвращает кэшированный объект. Там нет проблем, но я не могу понять, как передать тип в функцию для использования с 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

Я делаю это совершенно неправильно или я что-то упускаю?

1 Ответ

0 голосов
/ 10 февраля 2009

Используйте универсальный:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...