请原谅我的无知/错误,因为我是新手和学习者.我有一个带有国家名称的静态类,Finland如下所示.
namespace Countries
{
public static class Finland
{
public static int ID { get; set; } = 7;
public static string nameOfCountry { get; set; } = "Finland";
public static string abbreviation { get; set; } = "FI";
public static string flagLocation { get; set; } = "finishFlag.png";
public static string GetFlag()
{
return "finishFlag.png";
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用HttpClient从网站上执行GET请求JSON字符串.然后我使用DeserializeObject将JSON反序列化为一个对象.对象的一个变量是string countryName(与字符串nameOfCountry完全匹配).通过使用此字符串(countryName),我想GetFlag()从相应的国家/地区类调用该方法.但是,我不知道如何从字符串中调用此静态方法countryName.我可以将nameOfCountry字符串与countryName字符串进行比较,但是我有24个国家类,如类Finland,这意味着24 if else if语句.
我Type.GetType()从StackOverflow中的一个答案中看到了该方法,但我不明白这是如何在这里使用的,因为我没有创建实例.请提供解决方案的示例,以便更容易理解.谢谢.
您不需要24个不同的类,需要1个类,包含24个实例.
public class Country
{
public int ID { get; }
public string NameOfCountry { get; }
public string Abbreviation { get; }
public string FlagLocation { get; }
public Country(int id, string nameOfCountry, string abbreviation, string flagLocation)
{
ID = id;
NameOfCountry = nameOfCountry;
Abbreviation = abbreviation;
FlagLocation = flagLocation;
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果这些属性static与问题中的属性相同,则所有实例都将共享该值,这是您不想要的.
存储这些类(假设您不能使用数据库)的最佳方法是使用Dictionary:
private static Dictionary<string, Country> _countries = new Dictionary<string, Country>
{
["Finland"] = new Country(7, "Finland", "FI", "finishFlag.png"),
["USA"] = ...
};
Run Code Online (Sandbox Code Playgroud)
然后,您可以按名称访问这些国家/地区:
Country country = _countries["Finland"];
Run Code Online (Sandbox Code Playgroud)
然后,将字段添加到字典比创建新类和添加新if案例要容易得多.
| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |