我正在使用t4(文本模板)生成电子邮件,并希望为我的模板提供一个通用的基类。为此,我创建了一个电子邮件基础模板,并使我的所有电子邮件模板都继承自该模板。像这样:
基本模板:
<#@ template language="C#" #>
Run Code Online (Sandbox Code Playgroud)
派生模板:
<#@ template language="C#" inherits="BaseTemplate" #>
<#@ parameter name="Param" type="System.String" #>
Template! Param=<#= Param #>
Run Code Online (Sandbox Code Playgroud)
注意派生模板中的参数。如果存在,它将导致模板具有Initialize方法。并且,由于派生的模板派生自基本模板,因此派生模板中的Initialize方法的声明使用关键字“ override”。但是,基本模板上没有Initialize方法。这会导致错误:
'Template.Initialize()': no suitable method found to override
Run Code Online (Sandbox Code Playgroud)
我可以通过在基本模板中声明一个虚拟参数来解决此问题:
<#@ template language="C#" #>
<#@ parameter name="DummyParam" type="System.String" #>
Run Code Online (Sandbox Code Playgroud)
这将导致在基础模板中生成一个Initialize方法,从中可以继承派生模板。
我的问题是,我缺少什么吗?必须添加一个虚拟参数来使编译器适应,这似乎使我做错了。
| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |