[Решено] - Вызвать значение свойства класса из переменной

Регистрация
05.06.2019
Сообщения
570
Благодарностей
453
Баллы
63
Есть класс, в котором есть 10 свойств.

Мини пример класса:
class MyClassProperty
{
    public string Property1 {get; set;}
    public string Property2 {get; set;}
    public string Property3 {get; set;}
    public string Property4 {get; set;}
    public string Property5 {get; set;}
}

Делаю инициализацию экземпляра класса и обращаюсь к 1 из его свойств.

Пример:
MyClassProperty test = new MyClassProperty();
test.Property1; //получаю значение
Допустим есть переменная во входных настройках, в которой хранится имя Propetry3.
Из полученных входных данных, становится ясно, что нужно пользователю.

Вопрос:
Как сделать, чтобы вызвать это имя (свойства), через экземпляр?

К примеру метод с входными параметрами не подходит,
Пример метода:
MyClassProperty test = new MyClassProperty();
public void MyMethod(string name)
{
    test.name; // по сути ссылка на свойство MyClassProperty.Propetry3 которое должно вызваться, для выполнения.
}
Где name, по сути хранит имя Propetry3 (Имя свойства класса)
Теперь мне нужно вызвать это свойство. Как альтернативное решение, switch, но что если свойств +100500?

Имеется ли альтернативная реализация?
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 704
Баллы
113
не понятно ничего. что за переменная ? где она ? в классе ? в зенке ?
в примере же вызывается свойство класса.
 
Регистрация
05.06.2019
Сообщения
570
Благодарностей
453
Баллы
63
del
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 704
Баллы
113
может и можно, но это не правильно. для таких данных есть списки, таблицы.
в конструкторе класса создается переменная - таблица приватная. первый столбец название переменной, второй данные
там же заполняется.
и для работы 2 метода Get_By_Name(name) и Set_By_Name(name,data);
ну еще можно метод Add и Del прикрутить.
в методах прописывается поиск по таблице и работа с данными.
 
Регистрация
05.06.2019
Сообщения
570
Благодарностей
453
Баллы
63
может и можно, но это не правильно. для таких данных есть списки, таблицы.
в конструкторе класса создается переменная - таблица приватная. первый столбец название переменной, второй данные
там же заполняется.
и для работы 2 метода Get_By_Name(name) и Set_By_Name(name,data);
ну еще можно метод Add и Del прикрутить.
в методах прописывается поиск по таблице и работа с данными.
Рассматривал вариант со словарем, где через метод перечисления свойств в классе, создается скажем так база всех свойств, по запросу ключа, выдается : test.Property; а после вызвать через делегат или лямду.

Опыта в C# еще маловато, возможно ошибаюсь, поэтому решил обратиться за помощью. Спасибо!
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 704
Баллы
113
Регистрация
05.06.2019
Сообщения
570
Благодарностей
453
Баллы
63
данные от кода надо отделять. данные не должны лезть в код.
Решение в пару строчек, через рефлексию, может кому пригодится:
C#:
MyClassProperty instance = new MyClassProperty();

string customNameProperty = project.Variables["customNameProperty"].Value; //value = Propetry3

var type = instance.GetType();
var namePropertyInMyClassProperty= type.GetProperties();
  
foreach (var property in namePropertyInMyClassProperty)
{
    if (customNameProperty == property.Name)
        project.SendInfoToLog(property.Name +" = "+ property.GetValue(instance));
    else
        return "Свойство не найдено!";
}
 
Последнее редактирование:

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)