What I m trying to do
我正试图使用 T4 创建邮件消息模板 。
我正在使用一个 预处理模板 , 如果我太过正确, 如果我想在运行时生成该信息而不引入对 微软。 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();
}
What is the problem
因为我需要上几个这样的班级, 我希望他们都有一个共同的邮件发送方法, 类似这样的东西:
public void SendMail(string to, IDictionary<string, object> parameters)
或,更佳的:
public void SendMail(string to, string Param1, string Param2)
由于生成的类别是局部的,因此有可能增加方法,增加另一个部分类别声明,但这意味着我必须对所有生成的类别重复(或多或少)相同的代码。
What I tried so far
我试图创建一个基础类, 但如果我尝试这样做:
<#@ template language="C#" inherits="MailTemplateBase" #>
然后是生成的代码解码符, 因为生成的类依赖于 < code> LoremIpsumBase 基类, 该基类定义了一些辅助方法( 我真的看不出来每个生成的类从几乎相同但不同的基类继承来有什么意义 ) 。
Questions
- How can I have a base class for my templates?
- How can I generate a method that accepts the same parameters as those declared in the template?