我在我的代码块中动态创建类和变量名称例如:
if (new<#=et.Name#> == null)
对于名为Site的实体模型,这会生成:
if (newSite == null)
但我想要做的是评估项目的类型,然后根据该类型生成代码。出于特定目的,我想编写一个代码块,它将根据该实体的键值的数据类型动态创建新的主键。所以我想在我的模板中做这样的事情:
<#if ( new<#=et.Name#>.<#=primaryKey.Name#>.GetType() == typeof( Guid ) ) {#>
if (new<#=et.Name#>.<#=primaryKey.Name#> == Guid.Empty )
new<#=et.Name#>.<#=primaryKey.Name#> = Guid.NewGuid();
<#} #>
名为Site的实体模型的后续生成代码如下所示:
if ( newSite.SiteKey == Guid.Empty )
newSite.SiteKey = Guid.NewGuid();
这在逻辑上看起来好像能够正常工作。但是,我无法找到具有嵌套模板块的正确语法,并评估这些值,然后将其放在条件中。注意表达式块嵌套在Statement Block中。所以上面的代码生成示例不起作用,因为Visual Studio抱怨语法的各种问题。
思想?
答案 0 :(得分:0)
如果类型位于您正在构建的程序集中,则可以使用
<#@ assembly name="$(TargetPath)"#>
中使用了这个技巧