我想设计一个静态对象的类。例如,让我们假设他们代表汽车模型。这是我开始的方式:将静态数据添加到C#项目
public class CarModel
{
internal CarModel(string manufacturer, string modelName, double seconds0To60, double maxMPH)
{
Manufacturer = manufacturer;
ModelName = modelName;
Seconds0To60 = seconds0To60;
MaxMPH = maxMPH;
}
public string Manufacturer { get; private set; }
public string ModelName { get; private set; }
public double Seconds0To60 { get; private set; }
public double MaxMPH { get; private set; }
public override string ToString() { return Manufacturer + " " + ModelName; }
static public readonly CarModel AlfaRomeo_Brera = new CarModel("Alfa Romeo", "Brera 1.75 TBi 3d", 7.5, 146.0);
static public readonly CarModel AlfaRomeo_Giulietta = new CarModel("Alfa Romeo", "Giulietta 1.4 TB Lusso 5d", 9.1, 121.0);
static public readonly CarModel Ford_Focus = new CarModel("Ford", "Focus 2.5 RS 3d", 5.2, 163.0);
static public readonly CarModel Ford_Mondeo = new CarModel("Ford", "Mondeo Saloon 2.0 Zetec 4d", 9.7, 130.0);
static public readonly CarModel Honda_Accord = new CarModel("Honda", "Accord Tourer 2.4 i-VTEC EX 5d (Adas)", 7.6, 138.0);
static public readonly CarModel Honda_Civic = new CarModel("Honda", "Civic Hatchback 1.8 i-VTEC Type S 3d Auto", 10.6, 127.0);
}
这种方法对于上述6种测试模型似乎很有效。但是,现在看来,我有大约500个车型可以输入,并且每种车型都有很多属性。我拥有的汽车数据目前在Excel电子表格中。所以问题是如何最好地将这些数据添加到我的DLL?
我想所有的汽车模型被编译到程序集DLL中,如果可能的话。所以我宁愿不使用数据库。我简要介绍了一些动态枚举文章 - 也许一些自动代码生成可能会起作用?或者也许我可以将我的数据复制并粘贴到资源文件中?或者,也许有人将DataSet或DataTable添加到包含此静态数据的项目中?
我认为上述示例类中的静态只读属性需要更改为访问模型列表的更复杂的方法。
请让我知道您的建议, 谢谢。
查找到资源。您可以为每辆汽车设置一个资源字符串,并从启动时实例化对象。 –
您可以将数据从Excel导出为CSV格式,并将该文件作为资源添加到您的程序集。然后,您可以使用CSV阅读器从资源运行时加载数据。 – dtb
我同意使用外部文件,这应该可以很容易地更新,而无需更改应用程序中的任何代码 – ScruffyDuck