一直想写一个Code生成系列,但写到CodeSimth,发觉在 和 两位大牛的博客里讲很详尽,所以就像写些示例方面的,但是苦于没有想到写些什么。最近写了两篇,大牛写得是CodeDom的,今天我就想借借大牛的示例写个CodeSimth版的,希望不要怪我,呵呵。我的Code生成技术已经写了CodeDom的见,欢迎各位园友指教。
好直接到主题。首先是数据实体MessageEntry(我到老A的基础上添加了description属性作为代码字段描述):
代码
在我的机子上的COdeSimth是2..0版本的所以不能使用Linq命名空间,我又想利用这个空间,比较快捷,所以我就在先3.0转化为
Dictionary<string, List<MessageEntry>>实体再传入模板:
Code:
代码
这下几可开始写模板了,见下Code:
代码
很简单,就不说了,如果有问题请留言,其中命名空间完全可以以属性方式传入。
XMl实体用的是老A的:
代码
1 <? xml version="1.0" encoding="utf-8" ?> 2 < messages > 3 < message id ="MandatoryField" value ="The {0} is mandatory." category ="Validation" description ="description" /> 4 < message id ="GreaterThan" value ="The {0} must be greater than {1}." category ="Validation" description ="description" /> 5 < message id ="ReallyDelete" value ="Do you really want to delete the {0}." category ="Confirmation" description ="description" /> 6 </ messages > 7 8
我想脱离CodeSimth工具,所以在建立了一个控制台程序,引用CodeSmith.Engine.dll程序集。
Code:
代码
生成后的代码:
代码
ok,全部完成。同时你也可以完全集成与VS中利用VSX Vs扩展,可以参考
本文转自破狼博客园博客,原文链接:http://www.cnblogs.com/whitewolf/archive/2010/09/25/CodeSimthNamedCMessage.html,如需转载请自行联系原作者