我最近开始研究CodeSmith,我有几个问题。 我想用4个块制作一个模板。 每个块将由用户选择。
例如,有一个模板
using System;
public class Hello3
{
public static void Main(string[] args)
{
Blocl 1
Blocl 2
Blocl 3
Blocl 4
}
}
这些块中的每一个都应由用户选择。每个块都存储在一个单独的文件中。 每个块都是一个功能。一个块的输出进入另一个块的输入。
P.S。抱歉我的英语不好。
答案 0 :(得分:0)
您可以使用字符串属性来设置模板或生成值的名称。然后你只需在生成时间内渲染这个字符串内容。
另一种选择是创建一个名称不同代码块的枚举。然后在模板内部,您可以render a sub template或返回一些静态文本。
您还可以创建一个自定义下拉列表,允许您选择CodeSmith模板。所有这些逻辑都需要在UITypeEditor中进行,您需要返回CodeTemplate using the API。这比第一个或第二个选项要困难得多。
答案 1 :(得分:-2)
我不知道如何使用CodeSmith,但你最好使用“构建块”方法。 AtomWeaver提供了一种通过称为“Atoms”的较小部分构建代码生成器的方法。这些原子是可以组合在一起的模板。
在你的情况下,我将构建一个名为cs_class的原子模板:
模板的执行代码将是:
code([[
using System;
public class Hello3
{
public static void Main(string[] args)
{
{{code_blocks}}
}
}
]])
注意{{code_blocks}}标记。另一个模板会在那里放一些代码。
然后,创建cs_code_block Atom模板。使用此代码:
对于管理部门:
under("cs_class")
对于Exec部分:
cursor("code_blocks")
code([[
<put user code here>
]])
under()命令可帮助您在AtomWeaver中构建交互式建模环境。现在,您的用户可以使用一个cs_class Atom创建一个模型,然后他可以根据需要添加尽可能多的cs_code_block Atoms。执行模型将生成所需的代码。
AtomWeaver可让您改进模型和代码生成器。很容易从几行开始,然后将其增长以获得完整的发电机。
我知道这是一个非常简单的例子,说明你可以用AtomWeaver构建什么,但它只是让你快速了解你可以完成的任务。