VB.NET: метод расширения для страниц, использующих GetLocalResourceObject - PullRequest
0 голосов
/ 11 февраля 2011

На наших страницах .aspx у нас много этого кода:

<%= CType(GetLocalResourceObject("key"), String)) %>

Я хотел бы добавить метод расширения, который я могу использовать в наших представлениях .aspx, который позволяет мне сделать это:

<%= GetLocalResourceString("key") %>

Код не работает, хотя:

Imports System.Runtime.CompilerServices
Imports System.Web.UI

Module Extensions

    <Extension()> 
    Public Function GetLocalResourceString(ByVal control as TemplateControl, 
        ByVal resourceKey as String) as String
        Return CType(control.GetLocalResourceObject(resourceKey)), String)
    End Sub

End Module

Согласно Intellisense, проблема в том, что GetLocalResourceObject не существует как метод объектов System.Web.UI.TemplateControl.

Однако, когда я смотрю на эту страницу в MSDN, она там есть.

Что я делаю не так? Должен ли метод расширения быть на другом объекте? Я пробовал другие и у меня такая же ошибка Intellisense / build.

1 Ответ

0 голосов
/ 19 мая 2011

GetLocalResourceObject защищен, поэтому его можно вызывать только изнутри страницы.

Я опубликовал аналогичный вопрос, чтобы узнать, знает ли кто-нибудь, как звонить за пределы страницы.

Я попытался создать класс, который унаследовал объект Page, а затем раскрыл метод, который вызвал GetLocalResourceObject для внутреннего использования. Я не могу заставить его работать, потому что когда вы передаете ME / This, вы не ссылаетесь на объект Page.

Вот мой похожий вопрос: Есть ли способ переместить вызов ASP GetLocalResourceObject во внешний статический / общий метод?

...