1

我正在开发一些软件,可以根据从某些设备收集的事件数据生成报告。数据存储在数据库中。我希望用户能够模板化软件生成的报告的输出文件名。因此,当用户决定生成报告时,他们配置的输出文件名模板将应用于从数据库检索到的数据。

例如,假设每个报告都有以下与之关联的数据模板元素:

<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>etc... 并从数据库中的数据或可能的实体对象中构建字符串。我查看了 ICustomFormatter 和 IFormatProvider,但我不确定它们是否完全适合我正在做的事情。

我正在使用 WPF 4.5,我的数据将由实体框架驱动。
任何想法,将不胜感激!

4

1 回答 1

0

我在我的问题中看到了这一点,但没有人回答。只是为了后代,我想记录我的所作所为。我最终使用了Regex.Replace。我使用枚举来列出不同的格式字段,如下所示:

String pattern = String.Format("<{0}>", Template.Timestamp);
String result = Regex.Replace(pattern, data.Timestamp.ToString());

其中“模板”是一个枚举,“时间戳”是我想要替换的元素。它似乎可以满足我的需要。

于 2015-09-30T13:36:11.767 回答