我希望能为枚举值添加更详细的描述。因此,我会在枚举的属性中添加一个名为Description的自定义标记值(Tagged Value),以提供描述。目标是,在生成代码时仅在存在这样的标记值时,向所标记的枚举属性添加自定义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 Software Engineering 上提出。