Лучшее решение для строки с настраиваемым разделителем - PullRequest
0 голосов
/ 28 мая 2020

Цель состоит в том, чтобы создать строку, которая представляет поля, и они могут быть разделены любыми символами, но порядок полей важен.

public class TransactionContext
{
    public string BranchId { get; set; }

    public string AccountId { get; set; }

    public int UserId { get; set; }

    public int CheckNum { get; set; }

    public int NumberOfRecords { get; set; }

    public string StartNextId { get; set; }

    public string StartPreviousId { get; set; }

    public string NextId { get; set; }

    public string PreviousId { get; set; }

    public int RecordCount { get; set; }

    public string ToPageContextString(string separator)
    {
        return BranchId + separator +
               AccountId + separator +
               UserId + separator +
               CheckNum + separator+
               NumberOfRecords + separator +
               StartNextId + separator +
               StartPreviousId + separator +
               NextId + separator +
               PreviousId + separator +
               RecordCount + separator;
    }
}

Я пробовал использовать StringBuilder для лучшего решения, и я получаю следующее.

    public string ToPageContextString(string separator)
    {
        var contextBuilder = new StringBuilder()
        return contextBuilder.Append(BranchId + separator)
                             .Append(AccountId + separator)
                             .Append(UserId + separator)
                             .Append(CheckNum + separator)
                             ...
                             .ToString();

    }

Моим последним подходом было бы использование отражения и настраиваемого атрибута порядка, как предложено здесь Получить свойства в порядке объявления с использованием отражения .

Это более элегантное решение?

1 Ответ

1 голос
/ 28 мая 2020

Что касается кратчайшего кода, я не думаю, что вы получите намного короче, чем params перегрузка string.Join() ...

public string ToPageContextString(string separator)
{
    return string.Join(
        separator,
        BranchId,
        AccountId,
        UserId,
        CheckNum,
        NumberOfRecords,
        StartNextId,
        StartPreviousId,
        NextId,
        PreviousId,
        RecordCount
    );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...