我最近开始学习CodeSmith,我有几个问题。我想用4个街区做一个模板。每个块将由用户选择。
例如,有一个模板
using System;
public class Hello3
{
public static void Main(string[] args)
{
Blocl 1
Blocl 2
Blocl 3
Blocl 4
}
}这些块中的每一个都应由用户选择。每个块都存储在一个单独的文件中。每个块都是一个函数。一个块的输出进入另一个块的输入。
抱歉我的英语不太好。
发布于 2011-08-11 16:46:20
可以使用string属性设置模板的名称或生成的值。然后,您只需在生成时呈现此字符串内容。
另一种选择是创建一个命名不同代码块的枚举。然后,在模板内部,您可以使用呈现子模板或返回一些静态文本。
您还可以创建一个自定义下拉列表,允许您选择CodeSmith模板。所有这些逻辑都需要发生在UITypeEditor中,您需要返回一个使用API的CodeTemplate。这比第一种或第二种选择困难得多。
发布于 2011-05-16 23:04:21
我不知道如何使用CodeSmith来实现它,但是您最好使用“构建块”方法。AtomWeaver提供了一种通过较小的部件构建代码生成器的方法,称为"Atoms“。这些Atoms是您可以组合在一起的模板。
在这种情况下,我将构建一个名为cs_class的Atom模板:
模板的Exec代码是:
code([[
using System;
public class Hello3
{
public static void Main(string[] args)
{
{{code_blocks}}
}
}
]])注意{{code_blocks}标记。另一个模板将在那里放置一些代码。
然后,创建cs_code_block原子模板。使用以下代码:
行政科:
under("cs_class")主管科:
cursor("code_blocks")
code([[
<put user code here>
]])下面()命令帮助您在AtomWeaver中构建交互式建模环境。现在,您的用户可以用一个cs_class原子创建一个模型,然后他可以添加任意数量的cs_code_block原子。执行模型将生成所需的代码。
AtomWeaver允许您改进模型和代码生成器。它很容易从几条线开始,然后增长到获得完整的生成器。
我知道这是一个非常非常简单的例子,说明您可以使用AtomWeaver构建什么,但它只是让您快速了解您可以完成的任务。
https://stackoverflow.com/questions/5991109
复制相似问题