有没有办法在.NET 3.5中运行时动态创建对象?

时间:2013-07-02 10:59:21

标签: c# .net-3.5

我正在使用带制表符分隔文本文件的导入程序。每个文件的第一行包含“列”,如ItemCode,Language,ImportMode等,并且可以有不同数量的列。

我能够获取每列的名称,无论是一个还是10个,依此类推。我使用一种方法来实现这一点,返回List<string>

private List<string> GetColumnNames(string saveLocation, int numColumns)
{
    var data = (File.ReadAllLines(saveLocation));
    var columnNames = new List<string>();
    for (int i = 0; i < numColumns; i++)
    {
        var cols = from lines in data
        .Take(1)
        .Where(l => !string.IsNullOrEmpty(l))
        .Select(l => l.Split(delimiter.ToCharArray(), StringSplitOptions.None))
        .Select(value => string.Join(" ", value))
               let split = lines.Split(' ')
               select new
               {
                   Temp = split[i].Trim()
               };

        foreach (var x in cols)
        {
            columnNames.Add(x.Temp);
        }
    }
    return columnNames;
}

如果我总是知道要期待哪些列,我可以创建一个新对象,但由于我没有,我想知道是否有一种方法可以动态创建一个对象具有与{{{ 1}}返回?
有什么建议吗?

2 个答案:

答案 0 :(得分:1)

对于它的价值,这是我使用DataTables实现我想要的方式。

// saveLocation is file location
// numColumns comes from another method that gets number of columns in file
var columnNames = GetColumnNames(saveLocation, numColumns);

var table = new DataTable();
foreach (var header in columnNames)
{
    table.Columns.Add(header);
}

// itemAttributeData is the file split into lines
foreach (var row in itemAttributeData)
{
    table.Rows.Add(row);
}

虽然能够按照我想要的方式操作数据还有一些工作要做,但Karthik的建议让我走上正轨。

答案 1 :(得分:0)

您可以创建字符串字典,其中第一个字符串引用“属性”名称,第二个字符串引用其特征。