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

Visual studio 在t4中同时使用继承和参数,visual-studio,t4,Visual Studio,T4,我使用t4(文本模板)生成电子邮件,并希望我的模板有一个共同的基类。为此,我创建了一个电子邮件基础模板,并让我的所有电子邮件模板都从中继承。像这样: 基本模板: <#@ template language="C#" #> <#@ template language="C#" inherits="BaseTemplate" #> <#@ parameter name="Param" type="System.String" #> Template! Param

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

基本模板:

<#@ template language="C#" #>
<#@ template language="C#" inherits="BaseTemplate" #>
<#@ parameter name="Param" type="System.String" #>
Template! Param=<#= Param #>
<#@ template language="C#" #>
<#@ parameter name="DummyParam" type="System.String" #>
我可以通过在基本模板中声明一个伪参数来解决这个问题:

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

这将导致在基础模板中生成Initialize方法,派生模板可以从中重写


我的问题是,我是否遗漏了什么?必须添加一个伪参数来安抚编译器,这会使我看起来好像做错了什么。

由于生成的类是分部类,您可以使用分部将initialize方法从附带的.cs文件注入基模板。