如何创建包含在运行时定义类型的属性的数据结构

时间:2017-03-27 15:53:42

标签: c# generics dynamic reflection

我正在研究数据可视化工具。它从纯文本文件中检索一堆数据,然后绘制该数据的各种图表和图形。

到目前为止,我一直在处理一组我知道类型的数据。

例如,如果我使用的CSV文件如下所示:

id,用户名,消息数量,消息
23123124,@ SomeUsername,5,这是一个5tr1ng
89134349,@ OtherUsername,8,另一个字符串

然后我可以将它存储在这样的对象中:

public class SomeClass
{
    private string id;
    private string username;
    private int numberOfMessages;
    private string message;
}

然后我只有List<SomeClass>

这很棒,但是它只适用于特定的CSV文件。我希望有一个灵活的数据结构,具体取决于CSV文件的内容。

通过读取文本文件第一行中的标题行,可以轻松发现属性的数量和这些属性的名称。每个数据的类型不清楚(例如,id可以存储为int或字符串),因此我将要求用户告诉应用程序每个属性使用什么类型。我可以通过在下拉列表旁边显示每个属性的名称来实现这一点,其中包含string,int,bool等选项。

但是如何获取该用户输入并创建包含这些类型属性的数据结构。因此,如果用户通过一个包含3个下拉菜单并选择“字符串”,“整数”和“布尔”的表单,我实际上想要一个看起来像这样的对象:

public class SomeClass
{
    private string someString;
    private int someInt;
    private bool someBool;
}

实现这一目标的最佳方法是什么?我对泛型有一个合理的理解,但在这种情况下不确定如何使用它们。我听说过反射类型类和动态关键字,但实际上并不了解它们。我曾尝试使用字典但仍然卡住了。这些选项中是否有可行?他们有点矫枉过正吗?我是否想过这个? 请帮助我!:D

谢谢!

0 个答案:

没有答案