我正在开发一些软件,可以根据从某些设备收集的事件数据生成报告。数据存储在数据库中。我希望用户能够模拟软件生成的报告的输出文件名。因此,当用户决定生成报告时,他们已配置的输出文件名模板将应用于从数据库检索的数据。
例如,假设每个报告都包含以下与之关联的数据模板元素:
<Name>
<Timestamp>
<Location>
<EventType>
因此,用户可以按任意顺序选择任何这些模板项,以确定输出文件名的格式。如果他们选择了这样的东西:
<Name> <EventType> <Location> <Timestamp>.pdf
让我们说这是数据库中当前报告的数据:
Name = "MyReport"
EventType = "Error"
Location = "Park Ave"
Timestamp = 1-30-2013 11.00.00 AM
生成实际报告时,报告文件名将如下所示:
"MyReport Error Park Ave 1-30-2013 11.00.00 AM.pdf"
我正在努力想出一种优雅的方式来提供自定义格式元素,例如<Name>, <Location>
等......并根据数据库中的数据或可能的实体对象构建字符串。我看过ICustomFormatter和IFormatProvider,但我不确定这些是否完全适合我正在做的事情。
我正在使用WPF 4.5,我的数据将由实体框架驱动 任何想法将不胜感激!
答案 0 :(得分:0)
我在问题中看到了这一点,没有人回答过。为了后代,我想记录下我做了什么。我最终使用了Regex.Replace。我使用枚举列出了不同的格式字段,如下所示:
String pattern = String.Format("<{0}>", Template.Timestamp);
String result = Regex.Replace(pattern, data.Timestamp.ToString());
其中“Template”是枚举,“Timestamp”是我想要替换的元素。它似乎适合我的需要。