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

简介:

  一直想写一个Code生成系列,但写到CodeSimth,发觉在TerryLee 和努力学习的小熊 两位大牛的博客里讲很详尽,所以就像写些示例方面的,但是苦于没有想到写些什么。最近Artech写了两篇从数据到代码——通过代码生成机制实现强类型编程--上篇和下篇,大牛写得是CodeDom的,今天我就想借借大牛的示例写个CodeSimth版的,希望Artech不要怪我,呵呵。我的Code生成技术已经写了CodeDom的见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扩展,可以参考明年我18 的VSX系列



本文转自破狼博客园博客,原文链接:http://www.cnblogs.com/whitewolf/archive/2010/09/25/CodeSimthNamedCMessage.html,如需转载请自行联系原作者
目录
相关文章
LaTeX中的多行数学公式
LaTeX中的多行数学公式
3093 0
LaTeX中的多行数学公式
|
8月前
|
人工智能 Java 数据安全/隐私保护
[oeasy]python081_ai编程最佳实践_ai辅助编程_提出要求_解决问题
本文介绍了如何利用AI辅助编程解决实际问题,以猫屎咖啡的购买为例,逐步实现将购买斤数换算成人民币金额的功能。文章强调了与AI协作时的三个要点:1) 去除无关信息,聚焦目标;2) 将复杂任务拆解为小步骤,逐步完成;3) 巩固已有成果后再推进。最终代码实现了输入验证、单位转换和价格计算,并保留两位小数。总结指出,在AI时代,人类负责明确目标、拆分任务和确认结果,AI则负责生成代码、解释含义和提供优化建议,编程不会被取代,而是会更广泛地融入各领域。
257 29
|
11月前
|
机器学习/深度学习 人工智能 算法
【AI系统】AI 框架基础介绍
本文介绍了AI算法、神经网络及其应用,解释了为何神经网络需要训练及AI框架的作用。通过解析深度学习的数学原理与反向求导算法,阐述了AI框架如何作为模型设计、训练和验证的标准工具,支持算法封装、数据调用及计算资源管理,强调了AI框架的发展历程和技术迭代。
423 9
【AI系统】AI 框架基础介绍
|
敏捷开发 算法 数据建模
『软件工程2』详解软件工程和软件过程模型
该文章深入解析了软件工程的概念及其过程模型,包括软件生命周期的不同阶段和常见的软件开发模型如瀑布模型、敏捷开发等,并探讨了各自的特点与适用场景。
『软件工程2』详解软件工程和软件过程模型
|
弹性计算 应用服务中间件 定位技术
基于地理位置的访问策略的GA加速最佳实践
全球加速GA是阿里云提供的全球网络加速服务,支持基于地理位置的访问策略。本文介绍如何通过多组GA实例组合,实现一个域名在全球多个区域的服务同步加速。具体步骤包括创建ECS实例、部署Nginx服务器、配置GA及全局流量管理器等。
483 5
|
Linux 开发工具 文件存储
Linux修改主机名的两种方法
Linux修改主机名的两种方法
455 0
|
存储 安全 Go
Go语言在区块链开发中的应用
Go语言在区块链开发中的应用
|
算法 自动驾驶 数据挖掘
【论文解读】单目3D目标检测 LPCG(ECCV 2022)
本文分享单目3D目标检测,LPCG模型的论文解读,了解它的设计思路,论文核心观点,模型结构,以及效果和性能。
468 0
|
Arthas Java 测试技术
Arthas中plaintext、pwd、quit-stop、reset基础命令应用
通过本教程的操作,您可以体验如何Alibaba Cloud Linux  2.1903 LTS 64位操作系统的云服务器上学习plaintext、pwd、quit-stop、reset基础命令教程用法。
|
移动开发 小程序
关于uni-app页面Page和组件Component生命周期执行的先后顺序
关于uni-app页面Page和组件Component生命周期执行的先后顺序
348 0