在t4中同时使用继承和参数

时间:2014-01-12 19:39:36

标签: visual-studio t4

我正在使用t4(文本模板)生成电子邮件,并希望为我的模板提供一个公共基类。为此,我创建了一个电子邮件基本模板,并使我的所有电子邮件模板都从中继承。像这样:

基本模板:

<#@ template language="C#" #>

派生模板:

<#@ template language="C#" inherits="BaseTemplate" #>
<#@ parameter name="Param" type="System.String" #>
Template! Param=<#= Param #>

请注意派生模板中的参数。如果存在,则会导致模板具有Initialize方法。并且,因为派生模板派生自基本模板,派生模板中Initialize方法的声明使用关键字“override”。但是,基本模板上没有Initialize方法。这会导致错误:

'Template.Initialize()': no suitable method found to override

我可以通过在基本模板中声明一个虚拟参数来解决这个问题:

<#@ template language="C#" #>
<#@ parameter name="DummyParam" type="System.String" #>

这导致在基本模板中生成Initialize方法,派生模板可以覆盖该方法。

我的问题是,我错过了什么吗?必须添加一个虚拟参数来安抚编译器,这看起来好像我做错了。

0 个答案:

没有答案