CodeSmith实用技巧(八):生成的代码输出到文件中

CodeSmith中,要把生成的代码文件输出到文件中,你需要在自己的模版中继承OutputFileCodeTemplate类。

<%@ CodeTemplate Language="C#" TargetLanguage="C#" Inherits="OutputFileCodeTemplate" Description="Build custom access code." %>
<%@ Assembly Name="CodeSmith.BaseTemplates" %>

OutputFileCodeTemplate主要做两件事情:

1.它添加一个名为OutputFile的属性到你的模版中,该属性要求你必须选择一个文件;

2.模版重载了方法OnPostRender(),在CodeSmith生成代码完成后把相应的内容写入到指定的文件中去。

如果想要自定义OutputFile属性弹出的保存文件对话框,你需要在你的模版中重载OutputFile属性。例如:你希望用户选择一个.cs文件来保存生成的代码,需要在你的模版中添加如下代码:

<script runat="template">
// Override the OutputFile property and assign our specific settings to it.
[FileDialog(FileDialogType.Save, Title="Select Output File", Filter="C# Files (*.cs)|*.cs", DefaultExtension=".cs")]
public override string OutputFile
{
    
get {return base.OutputFile;}
    
set {base.OutputFile = value;}
}

</script>
作者:TerryLee
出处:http://terrylee.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted @ 2005-12-28 08:44 TerryLee 阅读(2823) 评论(5)  编辑 收藏 网摘 所属分类: [13]  代码生成

  回复  引用  查看    
#1楼2005-12-29 09:23 | kid_li      
代码中的FileDialog我没有找到,查看其它的模版代码后感觉FileDialog应该是一个类。但是我用FileDialogAttribute类替换FileDialog,在引入CodeSmith.CustomProperties命名空间模版运行就通过了,不知这样做是否和你说的意思相同
  回复  引用  查看    
#2楼2006-01-11 10:08 | 努力学习的熊      
FileDialog类是一个抽象的类,必须重载才能进行使用,编译不能通过,请教一下:)

@kid_li
FileDialog是System.Windows.Forms下的一个类。
FileDialog 是抽象类,无法直接创建。而且,您也无法从该类继承。要创建对话框以选择或保存文件,请使用 OpenFileDialog 或 SaveFileDialog。
FileDialogAttribute类如你所说是CodeSmith.CustomProperties下的一个类,好像不大一样

  回复  引用    
#3楼2006-09-29 16:29 | xuhoudao[未注册用户]
能不能做到输出到多个文件呢?
  回复  引用  查看    
#4楼[楼主]2006-10-06 17:23 | TerryLee      
@xuhoudao
这个是可以的

  回复  引用  查看    
#5楼2007-12-27 09:14 | 元宝      



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 306233




相关文章:

相关链接: