Получение значения переменных по имени в 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 для получения значения, а затем возвращает результат в массив строк. Он объединяет строковые значения и отображает результат.

Источник: http://csharphelper.com/blog/2016/10/get-variable-values-by-name-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector