C#-使用配置列表/文件自动创建对象



我的意图是在应用程序启动时使用配置文件创建一组City类的对象。

City具有CityNamePopulation等性质。

基本上,配置文件提供了一个List<string>,其所有城市名称如下:

public List<string> configCityNames = new List<string> {
    "New York", "Chicago", "Boston", "San Francisco", "Miami", "etc."
};

此外,我还想将所有City对象存储在存储库中,以便从其他地方轻松访问它们。

如何为每个配置List项自动创建一个City对象?也许模型的init函数中有一个循环?对我来说尤其不清楚如何处理对象/变量名称?当所有对象都在循环中创建时,它们不是都有相同的对象/变量名吗?

您可以定义一个扩展方法来从string 的列表生成City的列表

public class City
{
    public string Name { get; set; }
    public string Population { get; set; }
}
public static class Mappings
{
    public static List<City> ConvertToCity(this List<string> names)
    {
        List<City> cities = new List<City>();
        foreach (string name in names)
        {
            cities.Add(new City { Name = name });
        }
        return cities;
    }
}

然后,您可以使用如下扩展方法:

class Program
{
    static void Main()
    {
        List<string> configCityNames = new List<string> {
            "New York", "Chicago", "Boston", "San Francisco", "Miami", "etc."
        };
        List<City> cities = configCityNames.ConvertToCity();
    }
}

类似这样的事情,我经常使用字典来跟踪值,同时知道密钥(只要密钥是唯一的-如果它不是唯一的,你可以使用KeyValuePairs列表)

例如,我将使用城市名称作为字典的关键字,并创建city类的实例并设置变量。它将允许您循环浏览它们,因为Dictionary值是IEnumerable的,但如果需要,仍然允许您按名称查找城市。

class City
{
    public string CityName { get; set; }
    public int Population { get; set; }
}
class Program
{
    public static List<string> configCityNames = new List<string> 
    {
        "New York", "Chicago", "Boston", "San Francisco", "Miami", "etc."
    };

    static void Main(string[] args)
    {
        var cities = new Dictionary<string, City>();
        foreach(var cityName in configCityNames)
            cities.Add(cityName, new City() { CityName = cityName });
        foreach (var city in cities.Values)
            Console.WriteLine(city.CityName);
    }
}

相关内容

  • 没有找到相关文章

最新更新