通过代码生成机制实现强类型编程-CodeSimth版

  一直想写一个Code生成系列,但写到CodeSimth,发觉在TerryLee 和努力学习的小熊 两位大牛的博客里讲很详尽,所以就像写些示例方面的,但是苦于没有想到写些什么。最近Artech写了两篇从数据到代码——通过代码生成机制实现强类型编程--上篇和下篇,大牛写得是CodeDom的,今天我就想借借大牛的示例写个CodeSimth版的,希望Artech不要怪我,呵呵。我的Code生成技术已经写了CodeDom的见CodeDom系列目录,欢迎各位园友指教。

        好直接到主题。首先是数据实体MessageEntry(我到老A的基础上添加了description属性作为代码字段描述):

 

通过代码生成机制实现强类型编程-CodeSimth版代码

 

 

在我的机子上的COdeSimth是2..0版本的所以不能使用Linq命名空间,我又想利用这个空间,比较快捷,所以我就在先3.0转化为

Dictionary<string, List<MessageEntry>>实体再传入模板:

Code:

 

通过代码生成机制实现强类型编程-CodeSimth版代码

 

 

这下几可开始写模板了,见下Code:

 

通过代码生成机制实现强类型编程-CodeSimth版代码

 

 

很简单,就不说了,如果有问题请留言,其中命名空间完全可以以属性方式传入。

XMl实体用的是老A的:

 

通过代码生成机制实现强类型编程-CodeSimth版
通过代码生成机制实现强类型编程-CodeSimth版代码
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版

 

 

我想脱离CodeSimth工具,所以在建立了一个控制台程序,引用CodeSmith.Engine.dll程序集。

Code:

 

通过代码生成机制实现强类型编程-CodeSimth版代码

 

 

生成后的代码:

 

通过代码生成机制实现强类型编程-CodeSimth版代码

 

 

ok,全部完成。同时你也可以完全集成与VS中利用VSX Vs扩展,可以参考明年我18 的VSX系列



本文转自破狼博客园博客,原文链接:http://www.cnblogs.com/whitewolf/archive/2010/09/25/CodeSimthNamedCMessage.html,如需转载请自行联系原作者
上一篇:关于java的try-catch


下一篇:C#编程-119:读取文件StreamReader类