我正在研究數據可視化工具。它從純文本文件中檢索一堆數據,然後繪製該數據的各種圖表和圖形。如何創建一個數據結構,其中包含在運行時定義類型的屬性
到目前爲止,我一直在處理一組我知道類型的數據。
例如,如果我有一個CSV文件看起來像這樣的工作:
ID,用戶名,郵件的數量,消息
23123124,@SomeUsername,5,這1秒一個5tr1ng
89134349, @AnotherUsername,8,另一個字符串
然後我可以存儲這個在這樣一個對象:
public class SomeClass
{
private string id;
private string username;
private int numberOfMessages;
private string message;
}
然後,我只是有一個List<SomeClass>
。
這是偉大的一切,但它只適用於該特定的CSV文件。我想要一個可以靈活的數據結構,具體取決於CSV文件的內容。
通過閱讀文本文件第一行中的標題行,可以很容易地發現這些屬性的數量和名稱。每種數據的類型都不明確(例如,一個id可以存儲爲int或字符串),所以我要求用戶告訴應用程序對於每個屬性使用何種類型。我可以通過在字符串,int,布爾等選項旁邊顯示每個屬性的名稱來做到這一點。
但是,如何獲取用戶輸入並創建包含這些類型屬性的數據結構。因此,如果用戶經過一個形式3個下拉菜單並選擇「字符串」,「整型」和「布爾」,能有效地希望對象,看起來像這樣:
public class SomeClass
{
private string someString;
private int someInt;
private bool someBool;
}
什麼是實現的最佳途徑這個?我對泛型有一個合理的理解,但不確定如何在這種情況下使用它們。我聽說反射,類型類和動態關鍵字,但不真正瞭解它們。我曾嘗試使用字典,但一直卡住。這些選擇中的任何一個都可行嗎?它們是否過度殺傷?我是否在說這個? 幫助我請!:D
謝謝!
你有固定的csv文件集來處理或者你在處理一系列具有隨機數量的列和數據類型的csv文件?即你可以說..這是報告類型1,2,3等。每個人都有一組已知的列? – Wheels73
另外,你剛剛考慮使用字符串的初始csv加載? – Wheels73
@ Wheels73 CSV文件超出了我的控制範圍。它們將由用戶提供。所以列的數量和它們應該存儲的類型對我來說是未知的。我最初可以將CSV文件的值作爲字符串加載,但我需要將它們轉換爲用戶定義的正確類型。 – Redtama