找到相关内容 22
借助扩展方法简化参数合法性判断
有许多的方法需要对传入的参数进行合法性判断,比如下面这种 1 void AddItem(int rpIndex, Item rpItem)2 {3     if(rpIndex < 0)4   
http://cyqdata.com/cnblogs/article-detail-52866 
c# 扩展方法奇思妙用滥用篇一:改进 2011 年度最佳代码
今天从老赵 的文章《谈谈年度最佳代码“不管你们信不信,反正我信了”》中学习了 2011 年度最佳代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 try { if (you.believe(i
http://cyqdata.com/cnblogs/article-detail-42697 
我的KT库之-----扩展方法
了解或者认识KT:      http://www.cnblogs.com/kingthy/archive/2011/08/08/2130973.html      在项目中如何使用KT?  &nbs
http://cyqdata.com/cnblogs/article-detail-42692 
跟小静读CLR via C#(09)-扩展方法
对于一些现成的类,如果我们想添加一些新的方法来完善功能,但是不想改变已有的封装,也不想使用派生类,那么该怎么办呢?这里我们可以使用扩展方法。 一见钟情--初识扩展 扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 我们首先来看个例子,有个
http://cyqdata.com/cnblogs/article-detail-42568 
c#扩展方法奇思妙用基础篇八:Distinct 扩展
刚看了篇文章 《Linq的Distinct太不给力了》,文中给出了一个解决办法,略显复杂。 试想如果能写成下面的样子,是不是更简单优雅: 1 2 var p1 = products.Distinct(p => p.ID);
http://cyqdata.com/cnblogs/article-detail-42400 
利用Mono.Cecil制作出枚举类的泛型扩展方法
我的项目的某部分需要经常判断枚举的某个标识的存在,就经常出现类似于“(A & B) == B;”这样的代码。不过我看着觉得不爽,也觉得很繁琐。我知道Enum类有HasFlag()方法,但是这个会导致装箱,智能感知也感知不出来,不好。于是我就写了下面的代码: 1 public static bool Has<TEnum&
http://cyqdata.com/cnblogs/article-detail-41629 
C# ---扩展方法
      虽然自己以前用过扩展方法,但是从来没有认真总结过什么是扩展方法,前天面试被问到什么是扩展方法,在什么情况下使用,没答出来,现在在网上找了一下,做个小结,希望能看到此文的朋友给出指正。      在项目中经常要引用到别人的dll,假设dll中有个student类, 该类中只有GetName
http://cyqdata.com/cnblogs/article-detail-41600 
扩展方法 之 基本数据篇
前一篇我列举了几个最常用到的基于Asp.Net的扩展方法,而这一篇基于基本数据的扩展方法理应不会逊一筹,因为它不局限于Asp.Net。何谓基本数据,这里直接摆定义:   C# 中有两种基本数据类型:值类型和引用类型。 值类型包括:简单类型、结构类型、枚举类型;引用类型包括:Object 类型、类类型、接口、代表元、字符串类型、数组。   说白了这篇就是扩展 int, string, doubl
http://cyqdata.com/cnblogs/article-detail-39156 
c#扩展方法奇思妙用变态篇四:string 的翻身革命
   string是各种编程语言中最基础的数据类型,长期以来受尽其它类的压迫,经常被肢解(Substring、Split)、蹂躏(Join)...  而现在string要“翻身闹革命”了,它几乎无所不能,可以为所欲为,令其它类心惊胆颤...    让我们来看一下革命后的string做了些什么?  1. 打开文件或网
http://cyqdata.com/cnblogs/article-detail-38859 
扩展方法 之 Asp.Net篇
说起扩展方法,不得不提博客园的鹤冲天,其关于扩展方法的文章基本上占了总文章的一半,其中不乏优秀之作。  我在Asp.Net开发期间也总结了不少扩展方法,与大家分享一下。   1. 获取GridView的主键值: public static T GetKey<T>(this GridView grid, int rowIndex){ T key = (T)grid.DataK
http://cyqdata.com/cnblogs/article-detail-38824 
扩展方法引申出的编程思维
1. Helper大爆炸 .NET Framework为我们提供了丰富的类库,但是这并不是万能地,在大部分的时间,我们都需要为我们的项目特殊定制我们的通用类库。 常常,我们都可以构造一个类,类里封装一些方法。但是对于很多时候,我们并没有办法提取出这样一个类,举一个小例子,我们在很多时候,需要把url给保存到数据库里,作为一个唯一标识,但是我们知道url所占空间很大,如果用url来建立索引的话是
http://cyqdata.com/cnblogs/article-detail-34979 
调用动态类型的扩展方法
对于一个动态类型来说,你可以认为它包含任意成员,它们都能通过编译。但到了运行时,到底是否拥有这些成员,就真相大白了。如 dynamic test = 7; Console.Write(test.Name); 编译器无法在编译时知道test的真正类型,因此会使用其运行时的实际类型,而默认对于它的所有调用都是合法的,不会引发任何编译时错误。但它会抛出一个运行时异常。因为在运行时,test为一个int,
http://cyqdata.com/cnblogs/article-detail-32633 
Asp.NET MVC Widget开发 - Html.Widget扩展方法
在Asp.NET开发博客类系统,我们经常都会用到Widget,像在线好友、最近访问好友、最新留言等,关于Asp.NET MVC与Asp.NET视图的差异,这里不再说了,大家可去查一下,接下来我以“我的好友”列表来要介绍在Asp.NET MVC实现这一功能以及结构设计。 开发工具:VS 2010 EN 开发语言:Visual C# ASP.NET MVC 3 As
http://cyqdata.com/cnblogs/article-detail-31816 
你有过对“扩展方法”中“扩展”二字新的理解吗?
MSDN官方文档中说,“扩展方法使您能够向现有类型‘添加’方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异。” 按照这种官方描述,扩展方法就是用
http://cyqdata.com/cnblogs/article-detail-31682 
c#扩展方法奇思妙用基础篇七:IsBetween 通用扩展
相信大家在看了本文的题目之后,马上就能写出 IsBetween 扩展来: public static bool IntIsBetween(this int i, int lowerBound, int upperBound, bool includeLowerBound = false, bool includeUpperBound = false) { return (inc
http://cyqdata.com/cnblogs/article-detail-25274 
c#扩展方法奇思妙用基础篇六:WhereIf 扩展
一、Where 扩展的不足 如下界面,可通过姓名、编号和地址对人员进行模糊查询: 我们通常会写出如下代码: public IQueryable<Person> Query(IQueryable<Person> source, string name, string code, string address) { var result = sour
http://cyqdata.com/cnblogs/article-detail-25223 
使用扩展方法打造一套简单的WPF/SL绑定机制
在昨天的博文《WPF/Silverlight的数据绑定设计的真糟糕》中,分析了三大应用场景下WPF/SL下绑定的缺陷。我的应用中有95%以上(甚至99%以上)的绑定都属于那三种应用场景,因此无法接受WPF/SL繁琐的绑定机制。骂不是目的,想办法解决问题是黑客精神的所在。知道缺陷之后,就可以来弥补。刚才花了两个小时时间用扩展方法写了一套新的WPF/SL绑定机制。 本文只是一份简单的草案和思路探索,
http://cyqdata.com/cnblogs/article-detail-21044 
ASP.NET MVC验证框架中关于属性标记的通用扩展方法
之前写过一篇文章《ASP.NET MVC中的验证》,唯一的遗憾就是在使用Data Annotation Validators方式验证的时候,如果数据库是Entityframework等自动生成的文件,就没有办法使用扩展属性标记进行标记。现在已经开始有了一些其它的Asp.net MVC 验证框架,使用上跟Data Annotation Validators差不太多,但是普遍有这样的问题,如果数据库是
http://cyqdata.com/cnblogs/article-detail-11680 
c#扩展方法奇思妙用基础篇五:Dictionary&lt;TKey, TValue&gt; 扩展
Dictionary<TKey, TValue> 类是常用的一个基础类,但用起来有时确不是很方便。本文逐一讨论,并使用扩展方法解决。 向字典中添加键和值 添加键和值使用 Add 方法,但很多时候,我们是不敢轻易添加的,因为 Dictionary<TKey, TValue> 不允许重复,尝试添加重复的键时 Add 方法引发 ArgumentException。 大多时候
http://cyqdata.com/cnblogs/article-detail-8528 
合理使用“.NET扩展方法”来简化代码(例子:空值判断,利用扩展方法实现LINQ操作符ForEach)
我们先简单介绍扩展方法的定义,扩展方法是用来在类型定义完成后再继续为其添加新的方法。扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。你只要在静态类的静态方法的参数前加上this,就可以生成这个类的扩展方法。 如果你曾经开发过详细资料
http://cyqdata.com/cnblogs/article-detail-8273