C# - 使用配置 list/file 自动创建对象
C# - Automatic creation of objects with config list/file
我的目的是在应用程序启动时使用配置文件创建一堆 class City
的对象。
class City
具有一些属性,例如 CityName
、Population
等
基本上,配置文件提供了一个 List<string>
,其中包含所有城市名称,如下所示:
public List<string> configCityNames = new List<string> {
"New York", "Chicago", "Boston", "San Francisco", "Miami", "etc."
};
我还想将所有 City
对象存储在存储库中,以便从其他地方轻松访问它们。
如何为每个配置 List
项自动创建一个 City
对象?也许在模型的初始化函数中有一个循环?对我来说特别不清楚如何处理 object/variable 名称?当循环创建所有对象时,它们不会具有相同的 object/variable 名称吗?
像这样我经常使用字典来跟踪值,同时知道一个键(只要键是唯一的 - 如果它不是唯一的,你可以使用 KeyValuePairs 列表)
例如,我会使用城市名称作为字典的键并创建城市 class 的实例并设置变量。它将允许您遍历它们,因为字典值是 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);
}
}
您可以定义一个扩展方法,从 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();
}
}
我的目的是在应用程序启动时使用配置文件创建一堆 class City
的对象。
class City
具有一些属性,例如 CityName
、Population
等
基本上,配置文件提供了一个 List<string>
,其中包含所有城市名称,如下所示:
public List<string> configCityNames = new List<string> {
"New York", "Chicago", "Boston", "San Francisco", "Miami", "etc."
};
我还想将所有 City
对象存储在存储库中,以便从其他地方轻松访问它们。
如何为每个配置 List
项自动创建一个 City
对象?也许在模型的初始化函数中有一个循环?对我来说特别不清楚如何处理 object/variable 名称?当循环创建所有对象时,它们不会具有相同的 object/variable 名称吗?
像这样我经常使用字典来跟踪值,同时知道一个键(只要键是唯一的 - 如果它不是唯一的,你可以使用 KeyValuePairs 列表)
例如,我会使用城市名称作为字典的键并创建城市 class 的实例并设置变量。它将允许您遍历它们,因为字典值是 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);
}
}
您可以定义一个扩展方法,从 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();
}
}