You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Enterprise Architect代码生成模板中转义引号及实现枚举值自定义属性生成

问题1:如何在Enterprise Architect代码生成模板中转义引号?

在EA的代码生成模板里,要输出双引号有两种简单可靠的方式:

  • 双引号转义法:连续写两个双引号,EA会自动解析成一个输出的双引号。比如你想生成代码var message = "Hello EA";,模板里就写:

    var message = ""Hello EA"";
    
  • 内置宏%q%:EA提供了专门输出双引号的宏,用这个更直观,不容易出错。上面的例子可以写成:

    var message = %q%Hello EA%q%;
    

如果你的内容里本身包含双引号(比如要生成var msg = "He said \"Hi\"";),可以结合%replace%宏处理转义:

var msg = %q%He said %replace("Hi", """", "\\\"")%q%;

问题2:为枚举值生成带Description标签的C#属性

你已经有了判断标签是否存在的思路,我来帮你完善这个模板逻辑,确保能正确生成C#的[Description]属性,同时处理描述内容里的引号转义:

首先,在Attribute Declaration模板里,替换原有代码为以下片段:

%set $desc = attTag:"Description"%
%if $desc != ""%
    [Description(%q%%replace($desc, """", "\\\"")%%q%)]
%endIf%
%attName% = %attInitialValue%,%endTemplate%

代码解释:

  1. %set $desc = attTag:"Description"%:把当前枚举属性的Description标签值存入变量$desc,方便后续判断和处理
  2. %if $desc != ""%:仅当标签存在且不为空时,生成[Description]属性
  3. %replace($desc, """", "\\\"")%:把描述内容里的双引号替换为\",避免生成的C#代码出现语法错误
  4. %q%:用来包裹描述内容,生成标准的字符串引号

举个例子,如果你的枚举属性StatusActive的Description标签值是"Active" user status,生成的代码会是:

[Description("\"Active\" user status")]
StatusActive = 0,

这样既满足了仅在标签存在时生成属性的需求,又处理了特殊字符的转义问题。


内容的提问来源于stack exchange,提问作者Tim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:20:35