代码改变世界

一起谈.NET技术,C# 中奇妙的函数之ToLookup

2011-09-01 23:58 by 狼人:-), 411 阅读, 0 推荐, 收藏,
摘要:我将和大家一起来学学C#中一些非常有用函数,对于有些人来说可能它们不起眼,因此常常忽略它们。它们不会嚷嚷到:使用我吧!我会让你节省很多的时间,而且让你的代码变得更加的简洁! -- 但是,这些话会从对它们熟悉的程序员的脑海中涌现出来。 好的!先来看看ToLookup: 故事的背景 让我们先来创建一个简单的类来表示产品,产品有ID,类别,和价格,这个类没有什么特别: public sealed class Product { public int Id { get; set; } public string Category { ... 阅读全文

一起谈.NET技术,晚绑定场景下对象属性赋值和取值可以不需要PropertyInfo

2011-09-01 23:58 by 狼人:-), 300 阅读, 0 推荐, 收藏,
摘要:在《一句代码实现批量数据绑定》中,我通过界面控件ID与作为数据源的实体属性名之间的映射实现了批量数据绑定。由于里面频繁涉及对属性的反射——通过反射从实体对象中获取某个属性值;通过反射为控件的某个属性赋值,所以这不是一种高效的操作方式。为了提升性能,我通过IL Emit的方式创建了一个PropertyAccessor组件,以实现高效的属性操作。如果你看了我在文中给出的三种属性操作性能的测试结果,相信会对PropertyAccessor的作用有深刻的印象。[源代码从这里下载] 目录: 一、PropertyAccessor与PropertyAccessor<T>的API定义 ... 阅读全文

一起谈.NET技术,三种属性操作性能比较:PropertyInfo + Expression Tree + Delegate.CreateDelegate

2011-09-01 23:58 by 狼人:-), 265 阅读, 0 推荐, 收藏,
摘要:在《上篇》中,我比较了三种属性操作的性能:直接操作,单纯通过PropertyInfo反射和IL Emit。本篇继续讨论这个话题,我们再引入另外两种额外的属性操作方式:Expression Tree(这和IL Emit基本一致)和通过Delegate的静态方法CreateDelegate创建相应的委托进行属性的赋值和取值。[源代码从这里下载] 目录 一、定义测试相关的接口、类型和委托 二、通过Expression Tree的方式创建用于属性操作的委托 三、编写属性赋值操作测试方法 四、编写属性取值操作测试方法 五、执行测试程序,查看... 阅读全文

一起谈.NET技术,ASP.NET下用URLRewriter重写二级域名

2011-09-01 23:58 by 狼人:-), 200 阅读, 0 推荐, 收藏,
摘要:这里要求对域名进行重写,实现http://1234.abc.com/ 到 ~/Defa.aspx?id=1234的重写。 第一:域名 首先域名要支持泛解悉,就是域名解悉的主机名为星号*,例:*.abc.com。如下图 这样能保证你在浏览器地址栏输入任何前缀,DNS都会把它们指向到你指定的IP地址上。 第二:IIS设置(Win2003 + IIS 6为例) (1)网站必须为Web服务器的默认站点,即端口号为80,主机头为空的站点。如下图所示。 该站点接收所有对该服务器的HTTP请求(其它设置为主机头的站点除外)。所以任何二级域名访问该服务器都会由该站点进行处理。 ... 阅读全文

一起谈.NET技术,基于SQL Server 2008 Service Broker构建企业级消息系统

2011-09-01 23:58 by 狼人:-), 254 阅读, 0 推荐, 收藏,
摘要:1、引言 Microsoft 在SQL Server 2005引入了服务代理 (Service Broker 简称SSB) 为技术支持代理设计模式和面向消息的中间件 (MOM) 的原则。Service Broker在SQL Server 2008上得到完善, SQL Server Service Broker 为消息和队列应用程序提供 SQL Server 数据库引擎本机支持。 这使开发人员可以轻松地创建使用数据库引擎组件在完全不同的数据库之间进行通信的复杂应用程序。开发人员可以使用 Service Broker 轻松生成可靠的分布式应用程序。使用 Service Broker 的... 阅读全文

一起谈.NET技术,关于Expression Tree和IL Emit的所谓的&quot;性能差别&quot;

2011-09-01 23:58 by 狼人:-), 290 阅读, 0 推荐, 收藏,
摘要:昨天写了《三种属性操作性能比较》,有个网友写信问我一个问题:从性能上看,Expression Tree和IL Emit孰优孰劣?虽然我在回信中作了简单的回答,但不知道这个网友是否懂我的意思。反正今天呆在家里也没事儿,干脆再就这个话题再写一篇文章。 目录: 一、Expression Tree和IL Emit并不存在所谓的性能差异 二、属性赋值操作的两种写法 三、属性取值操作的两种写法 四、两种写法对应的IL 一、Expression Tree和IL Emit并不存在所谓的性能差异 Expression Tree和IL Emit的性能孰... 阅读全文

一起谈.NET技术,Silverlight 的多线程能力(下)

2011-09-01 23:58 by 狼人:-), 181 阅读, 0 推荐, 收藏,
摘要:上一期笔者介绍了Silverlight实现多线程的诸多解决方案,本期笔者将通过一个实例来实现所有多线程编程方法,并且还将于JavaScript和Flash两种Web客户端技术性能进行比较,请勿拍砖。 在正式编程前,笔者还要重申上期非常重要的观点:Silverlight多线程主要作用不是在于提高性能,而是在于用户体验。这里要给多线程泼一盆冷水了,多线程与性能提升不是正比关系,如果你使用一个单核CPU的客户端设备,那么即便你创建100个多线程也与单线程的计算性能是一样的,因为一个CPU时间片下只能处理一个线程,多线程也必须串行处理,甚至还可能因为过多的CPU调度开销而导致性能不及单线程的情... 阅读全文

一起谈.NET技术,Silverlight 2.5D RPG游戏技巧与特效处理:(七)动画特写

2011-09-01 23:58 by 狼人:-), 197 阅读, 0 推荐, 收藏,
摘要:Silverlight中的HLSL不仅适用于场景与动画渲染,对于游戏中的角色,我们同样可以利用它制作动画特写。较常见的比如角色传送时的淡入淡出、扭曲变形、幻化呈现等切换动画,当然还有例如角色被DeBuff时所表现出来的放大缩小以及虚弱时的不规则体形等。适当的场合为角色增加动画特写使得游戏更显精致而华丽,当玩家身心愉快的融入其中而流连忘返时,或许正是这些魔幻般的特效在背后默默的飘散着令人迷醉的芳香。 还记得Shazzam吗?要制作特写依旧离不开这款强大的工具,以角色的传送特写“幻降”为例,对应Shazzam中的现成特效名为:DirectionalBlur,我们不妨看看它的HLSL代码: ... 阅读全文

一起谈.NET技术,由扩展方法引申出的编程思维

2011-09-01 23:58 by 狼人:-), 149 阅读, 0 推荐, 收藏,
摘要:1. Helper大爆炸 .NET Framework为我们提供了丰富的类库,但是这并不是万能地,在大部分的时间,我们都需要为我们的项目特殊定制我们的通用类库。 常常,我们都可以构造一个类,类里封装一些方法。但是对于很多时候,我们并没有办法提取出这样一个类,举一个小例子,我们在很多时候,需要把url给保存到数据库里,作为一个唯一标识,但是我们知道url所占空间很大,如果用url来建立索引的话是非常耗费空间,而且影响效率的,那么我们最常用的办法就是把url做一个Hash来作为索引的替代品。 这个时候,我们根本就没有办法说我们来怎么样提取一个类,然后在类里写这样一个方法,这个时候,... 阅读全文

一起谈.NET技术,VS2010 测试功能之旅:编码的UI测试(4)-通过编写测试代码的方式建立UI测试(下)

2011-09-01 23:58 by 狼人:-), 141 阅读, 0 推荐, 收藏,
摘要:回顾 最近比较忙,距离上次更新的时间较久,见谅。 在本章上部分,介绍了“添加用户”窗口的测试代码编写。想必大家也看到了,在UIMap.cs文件中实现自定义编码是一件很轻松的事情,接下来将介绍下个部分,查询用户窗体的测试代码的编写,以及他们测试的关联。 示例程序介绍 系统主窗口:(下载点我) 该系统拥有两个功能,“添加用户”和“查询用户”: 点击添加用户后,进入添加用户子窗体:(“添加用户”窗口的测试代码编写在上部分已经实现) 如果在之前的主窗口,点击查询用户,则进入查询用户子窗体: 注:系统默认自带了5个用户TestUser1, TestUser2, ... 阅读全文

一起谈.NET技术,Silverlight 2.5D RPG游戏技巧与特效处理:(六)流光追影

2011-09-01 23:58 by 狼人:-), 153 阅读, 0 推荐, 收藏,
摘要:依稀记得《奇迹》里为了让装备炫酷“流光”而砸锅卖铁;仍旧迷恋每次的跳跃、冲刺、特写所带来的动态“追影”。岁月流淌,让无数玩家无论花费多少时间与金钱都无怨无悔,依旧那天地合一之特性装备;手握幻象残光之溢彩神器,踏着御风而行的随影擦肩而过,陶醉的不仅仅是自己,亦绝非寂寞... “流光追影” 效果不仅提升了玩家对于装备品质的不懈追求,同时在趣味性及耐玩性方面都是优秀网游所必备的要素之一;事实也证明了拥有华丽的“流光追影”装备效果的游戏业绩往往都很不错,比如基于逐帧手绘的《地下城与勇士》及名作续集《万王之王3》 当然,“流光追影”特效在游戏中的应用非常广泛,除了武器和身体等部位会用到外,... 阅读全文

一起谈.NET技术,在.NET使用JSON作为数据交换格式

2011-09-01 23:58 by 狼人:-), 235 阅读, 0 推荐, 收藏,
摘要:我们知道在.NET中我们有多种对象序列化的方式,如XML方式序列化、Binary序列化,其中XML序列化是一种比较通用的在各语言之间传递数据的方式。除了这两种序列化方式之外,在.NET中还可以使用JSON序列化。 JSON(JavaScript Object Notation)是一种轻量级轻量级的数据交换格式,并且它独立于编程语言,与XML序列化相比,JSON序列化后产生的数据一般要比XML序列化后数据体积小,所以在Facebook等知名网站中都采用了JSON作为数据交换方式。在.NET中有三种常用的JSON序列化的类,分别是 System.Web.Script.Serializati... 阅读全文

一起谈.NET技术,.Net语言中关于AOP 的实现详解

2011-09-01 23:58 by 狼人:-), 285 阅读, 0 推荐, 收藏,
摘要:文章主要和大家讲解开发应用系统时在.Net语言中关于AOP 的实现。LogAspect完成的功能主要是将Advice与业务对象的方法建立映射,并将其添加到Advice集合中。由于我们在AOP实现中,利用了xml配置文件来配置PointCut,因此对于所有Aspect而言,这些操作都是相同的,只要定义了正确的配置文件,将其读入即可。对于Aspect的SyncProcessMessage(),由于拦截和织入的方法是一样的,不同的只是Advice的逻辑而已,因此在所有Aspect的公共基类中已经提供了默认的实现: public class LogAspect:Aspect { public ... 阅读全文

一起谈.NET技术,验证.NET强命称的思路和实例

2011-09-01 23:58 by 狼人:-), 201 阅读, 0 推荐, 收藏,
摘要:手头有一个行业软件,是需要插上加密狗才能正常运行的,C# / .Net Framework 1.1环境开发的。这是我们公司购买的正版软件,所以是能正常使用的,但是由于电脑多,加密狗难免要拔来拔去的。闲来无事,就研究研究吧,也好多学些调试知识。PEiD可以“鉴定”出该软件是Microsoft Visual C# / Basic .NET,新手不要以为脱壳查壳才用到PEiD啊。 那就用Reflector分析吧,注意到不插加密狗会弹出个对话框提示“*****未注册*****”的字样,部分功能受限。按F3显示搜索窗口,输入“未注册”,点其右侧“String Seach”图标进行字符串搜索。找到... 阅读全文

一起谈.NET技术,关于Winform下,获取Treeview中CheckBox选中项的技巧

2011-09-01 23:58 by 狼人:-), 283 阅读, 0 推荐, 收藏,
摘要:背景 今天,在做一个指纹管理平台的界面上,遇到了一些问题,因为公司的基础库中没有针对Winform平台的操作,所以在一个部门选择的场景中,关于如何获取部门TreeView中被选中的项目被难住了。所幸还有一个神器叫做搜索引擎,故谷歌一番,发现Asp.net下的这个问题很好解决,但是关于Winform平台下的类似问题,如凤毛麟角啊! 当然,今天我也是查了很久,终于发现了两篇不错的文章,帮助我解决了这个问题,不敢独享,结合自己对使用其方法的心得,特意记录下来,并通过一个小例子和大家一起分享。 问题是这样的 有一个部门列表,多级的(或者说无限极),我们在Winform端列出来(这个很简单)后,需要对其 阅读全文
上一页 1 ··· 230 231 232 233 234 235 236 237 238 ··· 312 下一页