摘要: 如题所述,巧妙使用扩展方法的优先级,美化你网站(ASP.NET MVC)页面的 TextBoxFor 文本框;配合 js 脚本,还能限制用户录入。而且你甚至不需要修改任何一个前台页面...先看个使用前后的对比图:是不是右侧的更漂亮些?使用几个简单的扩展方法就可以让你的整个 ASP.NET MVC 网站的页面变成右面的效果。TextBoxFor 扩展方法是ASP.NET MVC 2中 强类型 Htm... 阅读全文
posted @ 2010-05-12 11:16 貔貅 阅读(889) 评论(1) 推荐(0) 编辑
摘要: string是各种编程语言中最基础的数据类型,长期以来受尽其它类的压迫,经常被肢解(Substring、Split)、蹂躏(Join)... 而现在string要“翻身闹革命”了,它几乎无所不能,可以为所欲为,令其它类心惊胆颤...让我们来看一下革命后的string做了些什么?1. 打开文件或网址[代码]怎么做到的呢?看扩展,很简单,直接调用调用了Process.Start... 阅读全文
posted @ 2010-05-12 11:15 貔貅 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 最近写了几篇《c#扩展方法奇思妙用》的文章,一直只是讨论如何扩展、如何使用的问题,几乎没有涉及效率方面。而大家的回复好多都在问效率如何、性能怎样,也引起了我对效率的关注,今天将初步测试的结果发出来,大家一起探讨一下。以前没太写过性能测试的代码,上网找了一下,说可以用Stopwatch进行计时,比较准确。Stopwatch使用比较简单,几个方法从名字上就知道用用途:Reset(计时清零)、Start... 阅读全文
posted @ 2010-05-12 11:15 貔貅 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 变态篇二中给出了对if/else、swith/case及while 的扩展,大家评价各不相同,其实本人也感觉有点牵强。其中举了一个Swith扩展的应用,今天突然有了新想法,对它改进了一些。所谓“语不惊人死不休”,且看这次的改进如何。我先把扩展的源代码贴出来,折叠一下,等看完后面的例子和讲解再回来看。(和前面一样,本文侧重想法,代码演示用,如需使用,请自行完善)[代码]这段代... 阅读全文
posted @ 2010-05-12 11:14 貔貅 阅读(545) 评论(1) 推荐(0) 编辑
摘要: 本文探讨如何使用扩展方法封装 if/else、swith/case及while,通过使用这些扩展,写出的代码将使用很少的大括号{ }。扩展的效果如何,还请大家来评判!声明:本文属于(改)变(形)态篇,只是提出一种想法,所提供的代码也只是示例,可以测试通过,但不完善。首先我们来对看if/else和swith/case,两者在代码中都用来表达分支结构。这里我们统一封装成一个If扩展:[代码]看下面的调... 阅读全文
posted @ 2010-05-12 11:13 貔貅 阅读(347) 评论(0) 推荐(0) 编辑
摘要: 先回顾一个数列的概念:按一定次序排列的一列 数 称为数列...(请参见百度百科:数列)几个简单的数列:1, 1, 1, 1, 1, 1, 1... //数列10, 1, 2, 3, 4, 5, 6, 7... //数列20, 1, 4, 9, 16, 25, 36, 49... //数列3通项公式的定义:数列的第n项与项的序数这间的关系,也就是数列生成算法上面几个数列可表示为An = F(n) =... 阅读全文
posted @ 2010-05-12 11:12 貔貅 阅读(360) 评论(0) 推荐(0) 编辑
摘要: Type 类提供了大量的属性和方法,但在一些基础性开发工作中,Type类功能还有些欠缺,尤其上在处理泛型类型时,如可空类型和泛型集合类型。下面的类就针对这些地方进行扩展。[代码]从名字上就以大体知道方法的功能,下面是部分测试代码,帮助大家理解:[代码]代码就是最好的文档,想必大家已经都看明白了。 TypeHelper 是我从一个类库中提取的,它原本是一个 internal static class... 阅读全文
posted @ 2010-05-12 11:12 貔貅 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 我的上一篇随笔《c#扩展方法奇思妙用高级篇六:WinForm 控件选择器》中给出了一个WinForm的选择器,其实质就是一个“树”的遍历器,但这个遍历局限于WinForm的Control类。在数据结构中,“树”的遍历是一个通用算法,那我们为什么不做一个通用的“树”遍历扩展呢? 先看一个简单的类People(将作为测试用的例子)... 阅读全文
posted @ 2010-05-12 11:11 貔貅 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 在Web开发中,jQuery提供了功能异常强大的$选择器来帮助我们获取页面上的对象。但在WinForm中,.Net似乎没有这样一个使用起来比较方便的选择器。好在我们有扩展方法,可以很方便的打造一个。 我们先看几个类图,深入认识一下我们常用的WinForm控件:图1 ScrollableControl类图图2 ButtonBase类图 图3 TextBoxBase类图 图4 ListControl类... 阅读全文
posted @ 2010-05-12 11:10 貔貅 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 在.Net中,System.Object.ToString()是用得最多的方法之一,ToString()方法在Object类中被定义为virtual,Object类给了它一个默认实现:[代码].Net中原生的class或struct,如int,DateTime等都对它进行重写(override),以让它返回更有价值的值,而不是类型的名称。合理重写的ToString()方法中编程、调试中给我们很大方... 阅读全文
posted @ 2010-05-12 11:09 貔貅 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 从系列文章开篇到现在,已经实现的很多扩展了,但过多的扩展会给我们带来很多麻烦,试看下图: 面对这么多“泛滥”的扩展,很多人都会感到很别扭,的确有种“喧宾夺主”的感觉,想从中找出真正想用的方法来太难了!尽管经过扩展后的string类很“强大”,但易用性确很差。很多人因此感觉扩展应适可而止,不该再继续下去...其实这是一种逃避问题... 阅读全文
posted @ 2010-05-12 11:09 貔貅 阅读(205) 评论(0) 推荐(0) 编辑
摘要: Enumerable.Cast<T>用于将IEnumerable转换为泛型版本IEnumerable<T>。转换后可尽情享用Enumerable的其它方法(如Where、Select),给我们的编码带来极大便利。但MSDN中仅给出一个转换ArrayList的例子,很多人看了感觉现在都在用List<T>,还有谁会用ArrayList,Cast<T>没多... 阅读全文
posted @ 2010-05-12 11:08 貔貅 阅读(341) 评论(0) 推荐(0) 编辑
摘要: Enumerable.Aggregate 扩展方法在System.Linq命名空间中,是Enumerable类的第一个方法(按字母顺序排名),但确是Enumerable里面相对复杂的方法。MSDN对它的说明是:对序列应用累加器函数。备注中还有一些说明,大意是这个方法比较复杂,一般情况下用Sum、Max、Min、Average就可以了。看看下面的代码,有了Sum,谁还会用Aggregate呢![代码... 阅读全文
posted @ 2010-05-12 11:07 貔貅 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 先看下ScottGu对In的扩展:调用示例1:调用示例2:原文地址:New "Orcas" Language Feature: Extension Methods 很多介绍扩展方法的也大都使用"In"作为例子,但很少有人再深入想一步。个人感觉这个In扩展的不够彻底,试看如下代码:[代码]每次使用 In 时都要声明一个数组(或集合),有点麻烦,如果像下面这个样子调用应该比较简单一些:[代码]感觉如何... 阅读全文
posted @ 2010-05-12 11:07 貔貅 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 本文为《c#扩展方法奇思妙用》系列文章基础篇,比较简单,没有太多技术含量,不用太多解释。同前面,主要提供大家一个思路,如需要使用,请自行完善。 应用一:转换为十六进制字符串[代码]第二个扩展返回的十六进制字符串是连着的,一些情况下为了阅读方便会用一个空格分开,处理比较简单,不再给出示例。应用二:转换为Base64字符串[代码]应用三:转换为基础数据类型[代码]BitConverter类还有很多方法... 阅读全文
posted @ 2010-05-12 11:06 貔貅 阅读(212) 评论(0) 推荐(0) 编辑
摘要: string是c#里面最最常用的类,和它的使用频度比起来,它的操作确少的可怜,实例方法只有三十个左右,静态方法只有十多个,远远满足不了我们日常的需求。本文使用扩展方法来增加string的功能,举出几个例子,也算是抛砖引玉吧!首先我们把string类最常用的静态方法IsNullOrEmpty扩展成“实例”方法:[代码]下面是调用代码: [代码]别小看这一步改进,扩展后可减少我... 阅读全文
posted @ 2010-05-12 11:05 貔貅 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 声明:本文仅提供一种编程思路,所提供代码仅供参考,如需使用,请自行完善。我们在做程序的的时候经常要处理用户输入,作为我们的主要语言中文,经常会出现全角、半角的问题,这会在查询时给我们带来很多麻烦。本文采用扩展方法解决全半角切换的问题,效果图代码如下:[代码]中文处理中另一个常用的是获取拼音首字母,如:中华人民共和国,首字母为ZHRMGHG。很多库存管理程序中都将这个作为助记码,用作快速查询。这里只... 阅读全文
posted @ 2010-05-12 11:04 貔貅 阅读(199) 评论(0) 推荐(0) 编辑
摘要: c#扩展方法出来已久,介绍的文章也很多,但都是笼统的。本人最近一直在思考扩展方法的应用,也悟出了一些,准备将这最近一段时间对扩展的思考,写成一个系列文章。每个文章只介绍一个应用方面,篇幅不会太长。先声明一下,本系列文章主要为提供一个新的编程的思路(所提供的代码仅供参考,不足处请包涵),希望大家把讨论的重点放在编程思想上。打算将文章写成三个部分:基础篇、高级篇、变态篇。1.基础篇简单易懂,主要是一些... 阅读全文
posted @ 2010-05-12 11:02 貔貅 阅读(235) 评论(0) 推荐(0) 编辑