首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于CodeSmith的几个问题

关于CodeSmith的几个问题
EN

Stack Overflow用户
提问于 2011-05-13 11:18:25
回答 2查看 348关注 0票数 0

我最近开始学习CodeSmith,我有几个问题。我想用4个街区做一个模板。每个块将由用户选择。

  1. 如何将文本块(函数)设置为选择用户?
  2. 如何在单独的文件中移动块?

例如,有一个模板

代码语言:javascript
复制
using System;

public class Hello3
{
   public static void Main(string[] args)
   {
    Blocl 1
    Blocl 2
    Blocl 3
    Blocl 4
   }
}

这些块中的每一个都应由用户选择。每个块都存储在一个单独的文件中。每个块都是一个函数。一个块的输出进入另一个块的输入。

抱歉我的英语不太好。

EN

回答 2

Stack Overflow用户

发布于 2011-08-11 16:46:20

可以使用string属性设置模板的名称或生成的值。然后,您只需在生成时呈现此字符串内容。

另一种选择是创建一个命名不同代码块的枚举。然后,在模板内部,您可以使用呈现子模板或返回一些静态文本。

您还可以创建一个自定义下拉列表,允许您选择CodeSmith模板。所有这些逻辑都需要发生在UITypeEditor中,您需要返回一个使用API的CodeTemplate。这比第一种或第二种选择困难得多。

票数 0
EN

Stack Overflow用户

发布于 2011-05-16 23:04:21

我不知道如何使用CodeSmith来实现它,但是您最好使用“构建块”方法。AtomWeaver提供了一种通过较小的部件构建代码生成器的方法,称为"Atoms“。这些Atoms是您可以组合在一起的模板。

在这种情况下,我将构建一个名为cs_class的Atom模板:

模板的Exec代码是:

代码语言:javascript
复制
code([[
using System;

public class Hello3
{
   public static void Main(string[] args)
   {
     {{code_blocks}}
   }
}
]])

注意{{code_blocks}标记。另一个模板将在那里放置一些代码。

然后,创建cs_code_block原子模板。使用以下代码:

行政科:

代码语言:javascript
复制
under("cs_class")

主管科:

代码语言:javascript
复制
cursor("code_blocks")
code([[
  <put user code here>
]])

下面()命令帮助您在AtomWeaver中构建交互式建模环境。现在,您的用户可以用一个cs_class原子创建一个模型,然后他可以添加任意数量的cs_code_block原子。执行模型将生成所需的代码。

AtomWeaver允许您改进模型和代码生成器。它很容易从几条线开始,然后增长到获得完整的生成器。

我知道这是一个非常非常简单的例子,说明您可以使用AtomWeaver构建什么,但它只是让您快速了解您可以完成的任务。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5991109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档