代码之家  ›  专栏  ›  技术社区  ›  Greg

在C中创建具有动态属性的对象#

  •  5
  • Greg  · 技术社区  · 14 年前

    我正在使用Linq加载一个csv文件,但是因为csv可能有任意数量的列,所以它返回的对象需要动态属性,而我不知道如何执行该操作。

    var data = from row in csvData
           let col = row.Split(',')
           select new
                  {
                      Field1 = data[0],
                      Field2 = data[1],
                      Field3 = data[2] // etc, etc
                  };
    

    如果可能,我想用csv文件中给出的名称来命名属性,而不是field1、field2等。

    谢谢!

    2 回复  |  直到 14 年前
        1
  •  7
  •   Jon Skeet    14 年前

    之后你会怎么处理这个?如果您知道其他地方的名称,并且使用.NET 4,则 能够 使用 ExpandoObject -用它作为字典填充它,然后在以后使用动态类型访问属性名。但如果是 全部的 动态的(也就是说,你在任何地方都不知道任何静态的东西),为什么不直接使用 Dictionary<string, string> ?

        2
  •  1
  •   Sruly    14 年前

    你只需要简单地使用数组甚至字典,但是如果你想用动态的方法做一些很酷的事情,那就签出clay吧。

    http://weblogs.asp.net/bleroy/archive/2010/08/18/clay-malleable-c-dynamic-objects-part-2.aspx