使用用户输入在类内调用对象

时间:2019-04-27 16:35:32

标签: c# class object variables syntax

我想编写一个简单的代码来获取用户输入并从类中获取输入。由于该类中有大量对象,因此我不想使用if或switch,请告诉我该如何执行此操作像下面的代码或向我建议一个简单的代码,当我使用此代码时,它告诉我期望的标识符< / p>

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 :(得分:0)

尝试一下:

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方法,指定要从中获取指定属性值的对象。