我正在嘗試做什麼
我正在嘗試使用T4創建郵件消息模板。定製T4預處理模板
我使用的是預處理模板,而如果我understoo正確的,是我必須做的,如果我想在運行時生成的消息不會對Microsoft.VisualStudio.TextTemplating
組件引入依賴。
因爲我想一些數據傳遞給我的模板,我添加的參數吧:
<#@ template language="C#" #>
<#@ parameter name="Param1" type="System.String" #>
<#@ parameter name="Param2" type="System.
Lorem <#= Param1 #> dolor <#= Param2 #>
然後我可以生成消息傳遞的參數如下:
static void Main(string[] args) {
var template = new LoremIpsum();
template.Session = new Dictionary<string, object>() {
{"Param1", "ipsum"},
{"Param2", "sit amet"},
};
template.Initialize();
string text = template.TransformText();
}
有什麼問題
由於我需要生成幾個這些類,我希望他們都有一個通用的方法來發送郵件,如下所示:
public void SendMail(string to, IDictionary<string, object> parameters)
,或者甚至更好:
public void SendMail(string to, string Param1, string Param2)
由於生成的類是局部的,也可以添加方法,以增加他們的另一部分類的聲明,但是這將意味着我將不得不重複(或多或少)所有生成的類的相同代碼。
我試了一下,到目前爲止
我試圖創建一個基類,但如果我嘗試這樣做:
<#@ template language="C#" inherits="MailTemplateBase" #>
然後將生成的代碼中斷,所生成的類是依靠LoremIpsumBase
基類,它定義了一些輔助方法(我真的沒有看到每個生成的類都從一個幾乎完全相同但不同的基類繼承而來)。
問題
- 我怎麼能有我的模板的基類?
- 如何生成接受與模板中聲明的相同參數的方法?
我編輯了這個問題相當多,但我認爲複製生成的基類並使用它作爲基類將是要走的路。恐怕這可能會破壞下一個VS版本或更新,雖然... –
是的,我可以理解,考慮到它在RTM和SP1之間打破。 –
請參閱我的更新以獲取有關如何推進這項工作的建議。 –