2009-02-10 61 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}

凡=是一個可選的格式。

對於第三方庫的理由太少了。