Вызовите объект внутри класса, используя пользовательский ввод - PullRequest
0 голосов
/ 27 апреля 2019

Я хочу написать простой код, чтобы получить пользовательский ввод и получить его из класса.Из-за большого количества объектов в классе, которые я не хочу использовать if или switch, скажите мне, как я могу это сделать, как следующий код или Предложите мне простой код, когда я использую этот код, он сообщает мне ожидаемый идентификатор

public class Rates
{
    public double IRR { get; set; }
    public double ISK { get; set; }
    public double JEP { get; set; }
    public double JMD { get; set; }//my object are more
    public double JOD { get; set; }
    public double JPY { get; set; }
    public double KES { get; set; }
    public double KGS { get; set; }
    public double ZWL { get; set; }
}
public class RootObject_1
{
    public string disclaimer { get; set; }
    public string license { get; set; }
    public int timestamp { get; set; }
    public string @base { get; set; }
    public Rates Rate { get; set; }
}
public void Main(string args)
{
 string json_mosavab = (new WebClient()).DownloadString("my link");
 var root1 = JsonConvert.DeserializeObject<RootObject_1>(json_mosavab);

string a = "IRR";//For example, the user input is IRR 
Console.WriteLine("IRR IS :" + root1.Rate.(a));//MY error is here
//I wantmy code to work this way
Console.WriteLine("IRR IS :" + root1.Rate.IRR);
}

1 Ответ

0 голосов
/ 27 апреля 2019

Попробуйте это:

Console.WriteLine("IRR IS :" + root1.Rate.GetType().GetProperty(a).GetValue(root1.Rate, null));

или аналогично:

Console.WriteLine("IRR IS :" + typeof(Rates).GetProperty(a).GetValue(root1.Rate, null));

В приведенном выше коде сначала вы указываете тип вашего объекта с помощью:

root1.Rate.GetType()

или

typeof(Rates)

Далее, вызывая GetProperty, вы указываете имя свойства, к которому вы собираетесь обращаться, как видно, вход этого метода - string, и, следовательно, это то, что пользователь может ввести. Наконец, используя метод GetValue, вы указываете объект, от которого хотите получить значение указанного свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...