如何在企业建筑师代码生成模板中逃脱引号



我想为枚举值提供进一步的描述。因此,我将一个自定义标记的值添加到称为 description 的枚举的属性,如果应提供描述。目标是,在代码生成期间,将自定义的c#属性添加到标记的枚举属性,但前提是存在这样的标记值。因此,我需要为属性声明编辑代码生成模板。目前使用:

$hasDescription = %attTag:"Description" ? "true" : "false"%
%if $hasDescription == "true"%
[Description(%qt%%attTag:"Description"%%qt%)]
%endIf%

这给了我所需的输出。但是,如果该值中有引号,它会打破输出代码文件。它不会编译。因此,我需要在标记值的值字段中替换/逃脱所有引号。我尝试了以下(各种组合(:

%REPLACE(attTag:"Description", """, "\"")%
%REPLACE(attTag:"Description", """", "\""")%
%REPLACE(attTag:"Description", "%qt%", "%sl%%qt%")%
%REPLACE(attTag:"Description", %qt%, %sl%%qt%)%

注意: %qt%用于插入"%sl%用于插入(参考(

他们都没有工作。要么将其插入生成的代码文件中的字符串,要么是在标记值的值中没有发生的引号。。

因此,有没有办法逃脱这些字符以能够在代码模板中的字符串中替换它们?


使用Enterprise Architect 13.5.1351

首先在SE软件工程上提出问题

我浏览了提供的其他模板,并在一些更多的摆弄后找到了解决方案。宏将引号中的一些文本或变量作为参数中。由于直接在REPLACE宏中使用逃生序列没有工作,因此我尝试事先将它们分配给变量:

$qt = %qt%
$escape = %sl% + %qt%
$description = %REPLACE(attTag:"Description", $qt, $escape)%

就是这样。终于有效。即使在代码模板语法上的文档> 字面文本上,在第二行中添加+%qt%之间的CC_6很重要。$escape = %sl%%qt%不起作用,因为它只会给我一个,而没有"

不需要变量$description,但添加了可读性。

最新更新