我有一个修改过的T4模板,可以从我的edmx构建类,并且它可以平稳地工作,除了派生类。
Product : BaseItem // works fine as do all top level classes
TranslatedProduct : Product : BaseItem // dang
我不清楚如何在派生类中有条件地设置T4模板以忽略:BaseItem。也就是说:
TranslatedProduct : Product
例如:
<#=Accessibility.ForType(entity)#> <#=code.SpaceAfter(code.AbstractOption(entity))#>partial class <#=code.Escape(entity)#><#=code.StringBefore(" : ", code.Escape(entity.BaseType))#> : BaseItem
在我的脑海中,我将其想象成 -
if(code.Escape(entity.BaseType).Equals(string.empty)
{
<#=Accessibility.ForType(entity)#> <#=code.SpaceAfter(code.AbstractOption(entity))#>partial class <#=code.Escape(entity)#> : BaseItem
}
else
{
<#=Accessibility.ForType(entity)#> <#=code.SpaceAfter(code.AbstractOption(entity))#>partial class <#=code.Escape(entity)#><#=code.StringBefore(" : ", code.Escape(entity.BaseType))#>
}
但是我收到了语法错误,所以我想看看是否有其他人尝试过这个,并且我是否走在正确的道路上。
<#= #>
标记之间的T4模板部分是简单的C#表达式。你知道顶级类型的entity.BaseType
评估结果是什么吗?例如,它是否为null
? - Merlyn Morgan-Graham