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

Eri*_*lik 5 t4 visual-studio

我正在使用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方法,从中可以继承派生模板。

我的问题是,我缺少什么吗?必须添加一个虚拟参数来使编译器适应,这似乎使我做错了。