Получение значения переменных по имени в C#
Процесс отображения значений переменных несколько запутан, но он не слишком длинный. Пример начинается с использования следующего кода для определения некоторых частных и открытых полей.
// Некоторые значения уровня формы.
private string private_value1 = "This is private value 1";
private string private_value2 = "This is private value 2";
public string public_value1 = "This is public string value 1";
public string public_value2 = "This is public string value 2";
public string[] array1 = {"A", "B", "C"};
public string[] array2 = {"1", "2", "3"};
Когда вы выбираете имя переменной из поля со списком, программа использует следующий код для отображения соответствующего значения переменной.
// Отображение значения выбранного поля.
private void cboFields_SelectedIndexChanged(object sender,
EventArgs e)
{
FieldInfo field_info =
this.GetType().GetField(cboFields.Text,
BindingFlags.Instance |
BindingFlags.NonPublic |
BindingFlags.Public);
if (field_info == null)
{
lblValue.Text = "";
}
else if (field_info.FieldType.IsArray)
{
// Присоединяем значения массива к строке.
string[] values = (string[])field_info.GetValue(this);
lblValue.Text = string.Join(",", values);
}
else
{
// Просто преобразуем его в строку.
lblValue.Text = field_info.GetValue(this).ToString();
}
}
Этот код использует метод GetType формы, чтобы получить объект типа формы. Он использует метод GetField этого объекта, чтобы получить объект FieldInfo, описывающий выбранное поле. Он включает в себя флаги Instance, NonPublic и Public, поэтому GetField возвращает информацию о значениях переменных, которые являются либо частными, либо общественности.
Если объект FieldInfo null, код отображает строку, в которой он не может найти поле. Если FieldInfo является массивом, код использует метод GetValue для получения значения, а затем возвращает результат в массив строк. Он объединяет строковые значения и отображает результат.
