2009-02-10 58 views
2

我曾经需要能够将模板化内容与生成填充该内容的动态字段的代码分开存储(想想邮件合并的单词)。用例通常围绕这样一个事实,即我想编写能够发送某种类型的动态内容(通常是电子邮件)的代码,我希望允许我的用户在不更改任何代码的情况下进行自定义。String Templatization Engine for .Net

例如,我们发送电子邮件给我们的客户。我们最终调整了发送的电子邮件并添加了动态内容(例如,我们可能想说“Dear {Contact.FirstName}”)。将这些电子邮件的格式放入数据库或某个XML文件并编写代码,可以方便地将这些电子邮件的所有属性的值分别提供给它。因此,创建一个带有内容和引擎的Email.XML,该引擎将XML文件传递给Contact对象并返回该电子邮件的HTML。从概念上讲,这与在MVC模式中分隔视图层的目标非常相似(电子邮件是这种情况下的视图,引擎是控制器,Contact对象是模型)。

它看起来有两个竞争者在.Net空间(两个端口的Java)(还有更多here,但他们是相当利基球员)。

有没有人使用,也可以这些或其他模板化引擎?他们之间的主要差异我应该考虑选择

回答

2

我已经使用StringTemplate.NET并享受了体验。花了一点时间才适应他们的世界观 - 起初循环似乎很模糊。不允许模板调用代码类型与其他大多数其他模板库不同。但一旦你习惯了,他们的决定就会有意义并且感觉自然。

0

我刚刚使用了RegEx.Replace,并且我在{和}之间找到的每个匹配查找了字典<中的标记,并执行了ITagParser。

尊敬的{称谓} {FamilyName}

当前日期是{现在= YYYY-MM-DD}

凡=是一个可选的格式。

对于第三方库的理由太少了。