Приведение классов .resx для получения ResourceSet

2

Я пытаюсь заполнить выпадающий список данными, извлеченными из файла .resx. Вместо того, чтобы иметь 5 различных функций, я хотел бы передать имя файла .resx и каким-то образом отбросить его, чтобы получить его с помощью GetReourceSet.

Вот что я сейчас делаю:

protected void populateCountryPickList(DropDownList whatDropDownList)
{
    ResourceSet rs = Resources.CountryPickList.ResourceManager.GetResourceSet(CultureInfo.CurrentCulture, true, true);
    whatDropDownList.DataSource = rs;
    whatDropDownList.DataTextField = "Value";
    whatDropDownList.DataValueField = "Key";
    whatDropDownList.DataBind();
}

В приведенном выше примере у меня есть файл .resx с именем CountryPickList.resx, поэтому просто вопрос использования имени .resx для извлечения ResourceSet с использованием GetResourceSet...

То, что я хотел бы сделать, это выяснить, как я могу передать строку своей функции с именем .resx и получить те же результаты.

Любые предложения будут очень благодарны!

веселит,

rise4peace

Теги:
resources
casting

1 ответ

2
Лучший ответ

ResourceManager имеет конструктор , который принимает имя файла resources.

Поэтому вы можете написать следующий код:

ResourceSet rs = new ResourceManager(whatDropDownList.Name, GetType().Assembly)
                     .GetResourceSet(CultureInfo.CurrentCulture, true, true);

EDIT. В ASP.Net это не совсем то же самое. Вы можете просмотреть сгенерированный исходный код (.designer.cs) для одного из ваших файлов ресурсов и посмотреть на реализацию статического свойства ResourceManager.

Он выглядит следующим образом:

ResourceManager temp = new ResourceManager("Resources.Resource1", Assembly.Load("App_GlobalResources"));
  • 0
    Вот функция: protected void populateDropDownList (DropDownList whatDropDownList, строка whatResourceName) {ResourceSet rs = new ResourceManager (whatResourceName, GetType (). Assembly) .GetResourceSet (CultureInfo.CurrentCulture, true, true); whatDropDownList.DataSource = rs; whatDropDownList.DataTextField = "Value"; whatDropDownList.DataValueField = "Key"; whatDropDownList.DataBind (); } Если у меня есть файл .resx с именем statelist.resx в App_GlobalResources. Я полагаю, я могу передать только Statelist этой функции?
  • 1
    идеальный! Спасибо, Слакс!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню