我正在编写一个小的控制台应用程序来使用TextTemplatingFilePreprocessor生成一些脚手架代码。我可以得到使用T4模板生成的类继承相同的类
我有一些使用的.tt文件,它们都使用相同的模型,从中导出各个类的值。沿着这个MSDN article,我为所创建的类创建了另一个部分类文件,并添加了一个允许我传入模型的构造函数。
所以,要生成一个类中调用ServiceEntity
,我有一个ServiceEntity.tt
文件,并呼吁像ServiceEntityCode.cs
其中包含这样的第2个文件...
partial class ServiceEntity
{
IServiceConfig _config;
public ServiceEntity(IServiceConfig config)
{
_config = config;
}
}
的事情是,我不得不复制这段代码来为我生成的每个类创建一个构造函数。
我宁愿有类似...
class BaseTemplate
{
IServiceConfig _config;
public BaseTemplate(IServiceConfig config)
{
_config = config;
}
}
partial class ServiceEntity : BaseTemplate
{
public ServiceEntity() : base() {}
}
谁能给我一个指针,这样的事情是否就可以实现,如果可以,在那里可以找到详细信息怎么样?
===编辑=== 下面是一个示例模板...
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".cs" #>
using System.Runtime.Serialization;
namespace <#= _config.ServiceEntityNamespace #>
{
[DataContract()]
public class <#= _config.ServiceEntityName #>
{
[DataMember()]
public string Description { get; set; }
[DataMember()]
public int Id { get; set; }
[DataMember()]
public string Name { get; set; }
}
}
的.TT文件下生成的.cs代码包括这...
public partial class ServiceEntity : ServiceEntityBase
{
//...
}
但ServiceEntityBase
本身并不从任何东西继承。
我假设您尝试生成构造函数并在生成的代码中继承基类。为什么没有工作?你能否发布生成代码的tt文件或者说明问题的东西?现在我并不确切地看到你在努力。 – FuleSnabel
生成的代码不会从任何东西继承(这是我的第一个想法) –
我已经添加了一些额外的细节问题 –