目标是制作一个代表字段的字符串,它们可以用任何字符分隔,但是字段的顺序很重要。
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();
}
我的最后一个建议是使用反射和自定义订单属性,如此处Get properties in order of declaration using reflection所示。
它们是更优雅的解决方案吗?
答案 0 :(得分:1)
就最短的代码而言,我认为您不会比params
overload of string.Join()
...更短...
public string ToPageContextString(string separator)
{
return string.Join(
separator,
BranchId,
AccountId,
UserId,
CheckNum,
NumberOfRecords,
StartNextId,
StartPreviousId,
NextId,
PreviousId,
RecordCount
);
}