如何使用c#在类中创建具有常量值的子属性的属性

时间:2014-12-01 07:12:49

标签: c# stringbuilder

我想使用StringBuilder()类创建一个字符串。我有一些员工记录的集合。 Employee的每条记录都有firstName,lastName,city等列。 我想要创建的字符串将分别具有上述列的值。 为此,我需要创建一个类

class Columns
{
    string Firstname
    {
        startPosition = 1;
        length = 32;
    }

    string LastName
    {
        startPosition = 33;
        length = 32;
    }
}

在我正在构建的字符串中,我需要在所提到的相应起始位置插入Firstname,Lastname的值。我是新手,我需要帮助来创建上面的课程。上面指定的代码只是类应该是什么样的原型,但我不知道如何创建它。我需要在所有列中都存在属性startPosition和length,并且这些值需要进行硬编码。对不起,如果我的问题很模糊。请帮忙..

1 个答案:

答案 0 :(得分:1)

首先让我告诉你,没有"子属性"这样的东西。你可以做的是拥有一个类的属性/字段,它暴露属性本身。

因此,您可能希望为一个class创建Column,然后创建一个List来跟踪您的列,如下例所示。

public class Column
{
    public string Name { get; set; }
    public int StartPos { get; set; }
    public int Length { get; set; }
}

public class Test
{
    private List<Column> Columns = new List<Column>();

    public Test()
    {
        this.Columns.Add(new Column { Name = "FirstName", StartPos = 1, Length = 32 });
        this.Columns.Add(new Column { Name = "LastName", StartPos = 33, Length = 32 });
    }

    public string GetThatString(string str)
    {
        foreach (var col in this.Columns)
        {
            // Do what you need. Sample:
            var item = str.Substring(col.StartPos, col.Length);
            Console.WriteLine("{0}: {1}", col.Name, item);
        }
    }
}

然后,您可以迭代列表中的项目,让您的字符串生成器完成您需要的工作。 当然,您也可以为每个列创建一个属性,而不是为所有列创建一个列表。