【发布时间】:2013-12-05 21:50:36
【问题描述】:
我希望最终用户能够指定自定义日期时间格式以输出到日志文件。 (它控制如何将日期时间戳添加到每一行。)
我正在使用带有一些连接的 String.Format,这会导致 ReSharper 警告关于不匹配的大括号。必须有更合适的方法来处理这个问题,但我找不到它。
string _entry = "Some event.";
public string GetFormattedEntry(string stampFormat)
{
return String.Format("{0:" + stampFormat + "}: {1}", DateTime.Now, _entry);
}
这个想法是可以使用用户指定的格式字符串来调用它,例如“yyyy-MM-dd HH:mm:ss”,这将导致:
2013-12-05 14:47:57 一些事件。
问题在于 ReSharper 不喜欢拆分大括号的用法(我也不喜欢)。感觉就像一个黑客。有没有更好的方法将字符串格式传递给方法并使用它来格式化返回值?
(请注意,用户指定的字符串在假定它可用之前已经过验证。)
编辑:
为了简洁起见,我已经简化了代码示例。实际的方法迭代一个对象集合并相应地格式化每个对象。它还执行涉及富文本格式等的其他功能,此处不相关。
【问题讨论】:
-
你为什么要在你想成为格式字符串的字符串上调用
String.Format?当然,您应该只返回字符串。 -
@ChrisF 为了简单起见,我删除了大部分代码; real 方法迭代对象列表,格式化与每个对象关联的 DateTime 并将其添加到日志条目字符串的前面。它执行的其他格式化功能包括添加行号或其他故障排除信息。
-
@millimoose 它按原样工作得很好,所以我可以不用管它。但是,为了代码的可读性和可靠性,我想知道是否有更清晰的方法来做到这一点。
-
@JYelton 在这些情况下,我将恢复我的策略,即保持黑客本地化和封装。