Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Использование значения строки как метод\свойство


Автор: AlexKoso 15.4.2009, 21:57
Подскажите как использовать значение строки как метод\свойство для переменной.
Ну например:
string s = "stroka";
string l = "Length";
как сделать, чтобы значение строки l можно было заюзать как свойство для строки s (т.е. само свойство нам не известно), и в итоге получить такую строку s.Length ???

Например по аналогии в 1с это можно можно было бы сделать таким образом: s[l] что равнялось бы s.Length
Подскажите, всю голову сломал.

Автор: diadiavova 15.4.2009, 22:23
Код

s.GetType().GetProperty( l).GetValue( s, null);

Вроде так

Автор: AlexKoso 15.4.2009, 22:56
Цитата(diadiavova @ 15.4.2009,  22:23)
Код

s.GetType().GetProperty( l).GetValue( s, null);

Вроде так

Спасибо. Но вот только возвращаемый тип далеко не int. 

А как можно получить элемент, имя которого из строки собирается, чтобы например в ручную все элементы не переписывать? (знаю что не понятно =) вот попробую код написать для примера, который ясное дело заведомо не рабочий :(

Код

string b= "button";
for (i=1, i<10, i++)
{
      b+i.Enabled = true; // хочу получить вот такое: button1.Enabled = true, button2.Enabled = true, button3.Enabled = true и т.д.
}


Автор: diadiavova 15.4.2009, 23:19
Если все кнопки в одном контейнере, то просто можно перебрать их и проверив заданные условия(например свойство Name) выполнить нужные действия. В ином случае, если кнопки просто объявлены в форме, то что-то в этом роде
Код

FieldInfo[] fis =  this.GetType().GetFields();
foreach (FieldInfo fi in fis)
{
      object f = fi.GetValue(this);
     if( f is Button)
     {
           Button b =  (Button)f;
           if(b.Name.Substring(0,6) == "button")
           b.Enabled = true;

     }
}

Вот как-то так.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)