我想設計一個靜態對象的類。例如,讓我們假設他們代表汽車模型。這是我開始的方式:將靜態數據添加到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