代码改变世界

随笔分类 -  My Console Assembly

Green.AgileMapper项目(2)-新增DO和DTO代码生成

2012-03-31 20:57 by 破狼, 2026 阅读, 收藏, 编辑
摘要: 如果你还不了解Green.AgileMapper的用意,作用请先一步到上篇Green.AgileMapper开源项目的使用,如果你觉得运行时(Runtime)的Mapper效率存在问题,在这个版本中有了更新,新增了C#直接代码的生成,这里的生成都已3.0后的扩展方法实现,你可以很方便的一句代码实现两者的转化。 代码生成我本想利用T4模板,但是由于我们的项目IDE版本是VS2008,对于T4的参数传递支持还不是很友好,你可能说用AppDomain.SetData,或者CallContext.LogicalSetData,但是可惜我们的饿MappingRule是不可序列化的,所以最后我只得采用了. 阅读全文

WinForm中实体类批量修改、批量提交辅助类

2012-03-27 11:47 by 破狼, 3378 阅读, 收藏, 编辑
摘要: 在WinForm项目开发中习惯于对于集合数据的批量修改,再一次性提交更新同步到数据库。这里我们就必须实现对对象的改变的跟踪记录,我们实现对象的改变跟踪有许多方式,大致我尝试了两种方式:1:对象强制实现接口,State守信和MakeMark行为。2:利用字典序继续改变。虽然1的方式是否更加合理,但是在winform中与BindingSource集合使用简化修增修改的书写,配合的不是很好,供给开发人员使用不是很爽。于是我修改成为第二种方式集合记录更改,在继续在原集合真实修改,触发BindingSource事件和与BindingSource很好的结合。 我们所要做的是对集合实体的变化做记录,这... 阅读全文

利用Attribute简化Unity框架IOC注入

2011-11-29 22:47 by 破狼, 8118 阅读, 收藏, 编辑
摘要: 在我们的领域驱动设计(DDD)开发中,我们经常需要IOC框架使得我的框架依赖翻转,依赖抽象,避免直接new依赖于我们的具体实现。这些使得我们的框架整个项目结构不变,很方便的改变具体实现,使得项目提供可测试性,模块之间实现高内聚低耦合,减少我们的后期维护成本。IOC框架一般基于容器,在容器中存储着各个抽象和具体实现的依赖关系,当我们需要发出请求的时候,IOC框架会在当前容器中找到我们所需要的具体实现返回给我们,当然这里还有DI注入(属性,方法,构造),在我们的使用者(客户端)不需要了解具体实现,如何初始化,如何流转等具体,只需明白我们的契约接口暴露给我们的服务,IOC框架是解决抽象和具体直接的. 阅读全文

报表中的Excel操作之Aspose.Cells(Excel模板)

2011-03-21 00:22 by 破狼, 25942 阅读, 收藏, 编辑
摘要: 本篇中将简单记录下Aspose.Cells这个强大的Excel操作组件。这个组件的强大之处,就不多说,对于我们的报表总是会有导出Excel的处理,如果你使用微软Excel的com组件,那么对于简单的操作还行,但是多余复杂的模板,那将是一个令人头疼的事。在Aspose.Cells之下,将是一个简单的事情。他可以导入导出excel操作,在本节将要说的就是他的际遇excel模板的导出强大功能。 多的不说,我们先来利用Northwind做两个小demo。先说说Aspose.Cells的模板语法:&=DataSource.Field,&=[DataSource].[Field]是对Dat 阅读全文

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

2010-09-25 09:23 by 破狼, 4255 阅读, 收藏, 编辑
摘要: 一直想写一个Code生成系列,但写到CodeSimth,发觉在TerryLee 和努力学习的小熊 两位大牛的博客里讲很详尽,所以就像写些示例方面的,但是苦于没有想到写些什么。最近Artech写了两篇从数据到代码——通过代码生成机制实现强类型编程--上篇和下篇,大牛写得是CodeDom的,今天我就想借借大牛的示例写个CodeSimth版的,希望Artech不要怪我,呵呵。我的... 阅读全文

发布一个WinForm控件--TableViewControl

2010-09-13 09:03 by 破狼, 5224 阅读, 收藏, 编辑
摘要: 这几个比较忙,也没有想到写些什么,所以停笔了一个多月。本想写个Code生成技术呢,到Codesmith和T4就不知道该写些什么示例,比较实用也大家比较感兴趣的,所以暂时停下,如果关于Code生成技术你有什么好的想法,可以给我写建议。 还是赶快进入正题,我以前写过一个Sql查询生成模块 。当时用的MDI窗体,始终感觉有些不如意,所以想重构下,特别有些sql性能和生成规则。所以就开发了今天要讲的控件,... 阅读全文

LINQ动态组合查询

2010-08-02 09:09 by 破狼, 18396 阅读, 收藏, 编辑
摘要: 最近在项目中用到了LINQ,在界面上有许多组合查询条件,我是一个比较懒的人,呵呵,不想在数据查询层写许多方法。我自己尝试写了个Expression的LINQ动态查询,目的是到达了,但是我在代码的初始表达式为null,每次组合AND前都要判断是否为空,为空则返回右边的表达式。今天在网上Google了一下,看到肖坤:Linq动态查询与模糊查询(带源码示例)中讲到的《dynamic linq queri... 阅读全文

F#初试--打印目录文件树

2010-07-14 17:28 by 破狼, 2327 阅读, 收藏, 编辑
摘要: 这几天正在学习F# 函数式编程语言,今天特地牛刀小试,写了一个文件目录层次结构树形的缩进打印Code,练练手。一直想找一本F#中文书籍PDF看看,网上搜了半天都没有找到,就从一个程序员的自省个F#系列了,在这里先感谢一个程序员的自省,希望能与大家多交流下F#。不说了,看Code:代码Code highlighting produced by Actipro CodeHighlighter (fre... 阅读全文

CodeSmith模板引擎系列二--文件目录树

2010-07-14 11:21 by 破狼, 1655 阅读, 收藏, 编辑
摘要: 今天网上Google了一下,关于CodeSmith的资料已经很全了,其中有TerryLee 和努力学习的小熊 两位大牛的很详尽,所以我也不准备把CodeSmith讲的很细致了,如果是新手学习者可以参考上面两位大牛的CodeSmith文章,CodeSmith的语法与ASP语法接近,语言可以选择我们的c#,所以学习起来很轻松。今天就写一个简单的文件目录树结构的递归模板。Template Code:代码... 阅读全文

CodeSmith模板引擎系列一

2010-07-13 12:12 by 破狼, 6633 阅读, 收藏, 编辑
摘要: 在前些日子写了一些关于CodeDom的代码生成技术(目录),这里先感谢大家的支持和关注。我打算写一些代码生成编译技术的系列,包括CodeDom、CodeSmith模板、T4模板、StringTemplate,以及Expression Tree的系列随笔。如果可能的话再加上Emit系列。在这些系列中希望大家多关注,特别多多指教和交流。好了废话少说,今天就开始写CodeSmith模板。 CodeSmi... 阅读全文

CodeDom系列目录

2010-07-09 12:17 by 破狼, 9894 阅读, 收藏, 编辑
摘要: CodeDOM 提供了表示许多常见的源代码元素类型的类型。您可以设计一个生成源代码模型的程序,使用 CodeDOM 元素 构成一个对象图。可以使用受支持的编程语言的 CodeDOM 代码生成器,将该对象图呈现为源代码。CodeDOM 也可以用于将 源代码编译成二进制程序集。 CodeDOM 的一些一般用途包括: 模板化代码生成:生成 ASP.NET、XML Web 服务客户端代理、代码向导、设计器或其他代码发出机制的代码。动态编译:支持以一种或多种语言进行代码编译。经过连续几节的CodeDom系列文章,到今天写的差不多,所以在这里记录下一个索引目录,以便在日后查阅。 CodeDom系列-开篇. 阅读全文

CodeDom六--实体类生成示例

2010-07-08 10:15 by 破狼, 4176 阅读, 收藏, 编辑
摘要: CodeDom这个东西个人觉得知识点不多,前几个续节写的已差不多了。在这节将演示一个CodeDom示例:数据库实体类的生成。这里先声明在如今的CodeSmith或者是T4模板中实现这些都很简单,并且更实用,在这里只是一个CodeDom示例,为了演示CodeDom。 在代码中位了简单、简化数据库数据信息的提取,引用了CodeSimth的SchemaExplorer.dll和SchemaExplore... 阅读全文

CodeDom系列五--动态编译

2010-07-06 09:07 by 破狼, 7323 阅读, 收藏, 编辑
摘要: 继上节我们把Code 表达式编译成为了Code代码,有时我们只想动态编译程序集,在内存中或者是硬盘上调用,这就是CodeDom的动态编译。微软在CodeDom中提供了动态编译程序,这是ICodeCompiler的用武之地了,它定义用于调用源代码编译的接口或使用指定编译器的 CodeDOM 树。可以从CodeDomProvider生成引用对象:CodeDomProvider.CreateProvid... 阅读全文

CodeDom系列四--Code生成

2010-07-05 09:19 by 破狼, 5606 阅读, 收藏, 编辑
摘要:       我们利用CodeDom技术生成了一些列Codedom Expression ,接下来的任务就是编译和生成,生成c#、Vb或者是.NET平台支持语言,编译程序集(dll或者是exe)。       CodeDomProvider:在2.0后提供了CodeDomProvider.Create... 阅读全文

CodeDom系列--事件(event)定义和反射调用

2010-06-22 13:22 by 破狼, 3727 阅读, 收藏, 编辑
摘要: CodeDom提供了对事件的支持,以及我们可以用反射机制对CodeDom生成的事件进行注册,以及调用。本节程序很简单,先贴上我将用CodeDom生成的代码:代码很简单哦,主要是看CodeDom的事件定义机制和反射调用CodeDom编译的类型方法事件。CodeDom代码为:本示例代码下载:CodeDomDemo3 阅读全文

CodeDom系列二---程序基本结构--符号三角形问题

2010-06-20 14:02 by 破狼, 4346 阅读, 收藏, 编辑
摘要: 昨天一个同学叫我帮编写一个符号三角形的c代码,今天就把它改写成用CodeDom生成的c#代码。 符号三角形:在一组字符串里(只有用空格分割的+或者-组成的字符串),在每次的相邻的两个符号比较,如果相同就在中间空格插入+,否则就插入-。一直运行到字符串里只有一个+或者-时停止,输出的字符串为符号三角形。由于是CodeDom些列,所以先介绍几个CodeDom表达式:1:CodeConditionSta... 阅读全文

CodeDom系列-开篇HelloWord

2010-06-19 09:07 by 破狼, 8220 阅读, 收藏, 编辑
摘要: 最近在自己实践一个异常扑捉设计,在模块中我觉得该给用户提供的是代码生成工具,而不是怎么去做,再自己去写代码。现在代码模板生成的有很多但我选择了用微软的CODEDOM技术来实现,由于比较熟悉,以及感觉我将只用在.NET平台是已经够强大了。最近也总想写点博客,但是不知道写些什么,所以就准备写个CODEDOM的系列。仅是开篇,就写个简单的HelloWord程序吧。CODEDOM在.NET Framewo... 阅读全文

Vczh Library++ 语法分析器开发指南(转载)

2010-04-28 14:36 by 破狼, 577 阅读, 收藏, 编辑
摘要: Vczh Library++ 语法分析器开发指南陈梓瀚前言在日常的开发工作中我们总是时不时需要写一些语法分析器。语法分析器不一定指的是一门语言的编译器前端,也有可能仅仅是一个自己设计格式的配置文件的读写程序,或者是一门用来简化我们开发的DSL(领域专用语言)。我们可以选择使用XML,不过因为XML的噪音实在是太多,所以自己写语法分析器在有些情况下是必要的,特别是那种经常需要修改的文件,使用XML有... 阅读全文

分页查询算法实践

2010-03-12 18:31 by 破狼, 3868 阅读, 收藏, 编辑
摘要: 马上要毕业了,心里很迷茫,感觉真的时间飞逝,软件真的博大精深,特别.NET平台在Microsoft下变化之迅猛,个人总是赶不上技术的日新月异。哎,希望自己能早日走上设计之路。闲来无事便根据自己大学四年项目实践经验,想实现一些常用模块的抽象和集成。考虑了一下觉得先该从分页查询入手,便简单的设计了下,现目前版本实现了单表的基本分页查询。我知道博客园了已经有很多前辈做了这个,本人设计能力和前辈们比那就欠缺多了,有那里不足的望指出,大家共同进步。下载代码:WolfPager下载主要采用工厂模式创建实现了PageSqlBase的对象,然后可以利用对象的GetSql()方法返回查询Sql语句。我的目的是生 阅读全文