摘要:说起扩展方法,不得不提博客园的鹤冲天,其关于扩展方法的文章基本上占了总文章的一半,其中不乏优秀之作。 我在Asp.Net开发期间也总结了不少扩展方法,与大家分享一下。 1. 获取GridView的主键值: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->public static T GetKey<T>(this GridView grid, int rowIndex){ T key = (T)grid.DataKeys[ro.. 阅读全文
艾伟_转载:扩展方法 之 Redirect 篇
2011-08-29 00:21 by 狼人:-), 202 阅读, 0 推荐, 收藏,
摘要:前言: 单看标题,可能很多朋友不知道我到底想写什么。在写这篇文章前,我自己跟自己斗争了很久,到底该不该写这篇文章?毕竟从现实主义来看,这篇文章可能落入“瞎扯淡”的行列,因为对大多数朋友来说,以下的所有扩展方法可能都不会用到。 如果真是这样,就当作一个“漫无边际”的想法来看好了。如果你根本不想浪费你的宝贵时间,就点这里 Redirect 回博客园主页,呵呵
一个 Redirect 为什么也可以耗费一篇文章的笔墨? 就 Redirect 一词成文的先例估计不会是我,但如果 扩展方法 + Redirect 这个话题,我可能就是第一人了。
葫芦里卖的是什么药? 这个“漫无边际”的想法实... 阅读全文
艾伟_转载:把Array说透
2011-08-29 00:21 by 狼人:-), 147 阅读, 0 推荐, 收藏,
摘要:1. 数组大局观 数组是一个引用类型,也就是意味着数组的内存分配在托管堆上,并且我们在栈上维护的是他的指针而并非真正的数组。接下来我们分析下数组的元素,其中的元素无外乎是引用类型和值类型。当数组中的元素是值类型时,不同于int i;这样的代码。数组会根据数组的大小自动把元素的值初始化为他的默认值。例如:
static void Main(string[] args)
{ int[] intArray = new int[3]; foreach(int i in intArray) { Console.WriteLine(i); ... 阅读全文
艾伟_转载:打造优雅的Linq To SQL动态查询
2011-08-29 00:21 by 狼人:-), 208 阅读, 0 推荐, 收藏,
摘要:首先我们来看看日常比较典型的一种查询Form 这个场景很简单:就是根据客户名、订单日期、负责人来作筛选条件,然后找出符合要求的订单。 在那遥远的时代,可能避免不了要写这样的简单接口:
public interface IOrderService{ IList<Order> Search(string customer, DateTime dateFrom, DateTime dateTo, int employeeID);} 具体爱怎么实现就怎么实现啦,存储过程,ORM框架。这里假定是用了孩童时代就开始有的存储过程吧: Code highlightin... 阅读全文
艾伟_转载:我对NHibernate的感受(2):何必到处都virtual
2011-08-29 00:21 by 狼人:-), 124 阅读, 0 推荐, 收藏,
摘要:上一篇文章主要是在夸NHibernate实现的好,而这篇就完全是来抱怨的了。NHiberante有个毛病,就是如果是和数据库产生映射的类,就要求所有的public成员和protected成员必须是virtual的。请注意这里的要求有两个细节: 即使是方法,也必须标记为virtual 即时是不和数据库有映射关系的属性,也必须标记为virtual 这就让我觉得无厘头了,为什么没有任何关系的东西也要受到限制?我知道NHiberante要求将属性标记为virtual是为了延迟加载,因为只有这样它才能生成如上一篇文章中那样的延迟代理类,这样就可以实现只在第一次访问属性的时候才进行“加载”... 阅读全文
艾伟_转载:话说并发
2011-08-29 00:21 by 狼人:-), 122 阅读, 0 推荐, 收藏,
摘要:对于很多人来说,并发是一个离不开的话题。那么我们平常对并发的理解可能局限于某个方面。去很好的理解并发,对于软件开发很有帮助。怎样去更好的理解并发? 苹果下落,在我们认识牛顿定律之前。如果问苹果是下落的,我们都会说大家都知道,很清楚,很明白——了解但没引起关注。如果问为什么苹果下落。我们会举出很多相关的概念来说明苹果为什么下落——相似性,但却没有一个很清晰的概念。在万有引力之后,我们的认识已经有一定的高度,甚至对以后很多科技都很有帮助。 所以怎样去理解并发,我们不缺乏经验。那么我们缺乏的就是那么一个高度,可以理解为深度的认识。 可能有人会讲并发作为一种缺陷,一个问题。此时,我将他... 阅读全文
艾伟_转载:C#中的委托和事件-抛砖引玉
2011-08-29 00:21 by 狼人:-), 247 阅读, 0 推荐, 收藏,
摘要:最近在学习委托和事件,在书店里面看了好多书,但是都是迷迷的…… 今天在博客园里面看到了 张子阳 所写的博客C#中的委托和事件:http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx 看后对委托和事件有了一个新的认识,可以是没有用到实际项目中去吧,感觉还是有点不知…… 下面我起一个抛砖引玉作用让这两天在书中看到的,及看张子阳博客和写的一个和他类似的程序…… 当第一次听到委托、事件时感觉比较抽象、很好奇,当看到老师在课堂上利用委托和事件实现两个窗体调用时、感觉委托太神奇了,呵、... 阅读全文
艾伟_转载:WCF基本异常处理模式[上篇]
2011-08-29 00:20 by 狼人:-), 214 阅读, 0 推荐, 收藏,
摘要:由于WCF采用.NET托管语言(C#和NET)作为其主要的编程语言,注定以了基于WCF的编程方式不可能很复杂。同时,WCF设计的一个目的就是提供基于非业务逻辑的通信实现,为编程人员提供一套简单易用的应用编程接口(API)。WCF编程模式的简单性同样体现在异常处理上面,本篇文章的主要目的就是对WCF基于异常处理的编程模式做一个简单的介绍。 一、当异常从服务端抛出 对于一个典型的WCF服务调用,我个人倾向于将潜在抛出的异常费为两种类型:应用异常(Application Exception)和基础结构(Infrastructure Exception)。前者为应用级别,主要体现为执行某... 阅读全文
艾伟_转载:[你必须知道的.NET】object成员,不见了!
2011-08-29 00:20 by 狼人:-), 183 阅读, 0 推荐, 收藏,
摘要:在.NET世界了,object是公认的造物主,其麾下的7大成员,个顶个的横行在任何系统的任何代码角落。 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->public class Object{ public Object(); public virtual bool Equals(object obj); public static bool Equals(object objA, object objB); publ... 阅读全文
艾伟_转载:WCF基本异常处理模式[下篇]
2011-08-29 00:20 by 狼人:-), 209 阅读, 0 推荐, 收藏,
摘要:从FaultContractAttribute的定义我们可以看出,该特性可以在同一个目标对象上面多次应用(AllowMultiple = true)。这也很好理解:对于同一个服务操作,可能具有不同的异常场景,在不同的情况下,需要抛出不同的异常。 1: [AttributeUsage(AttributeTargets.Method, AllowMultiple = true, Inherited = false)] 2: public sealed class FaultContractAttribute : Attribute 3: { 4: ... 阅读全文
艾伟_转载:二十行C#代码打造Ruby Markup Builder
2011-08-29 00:20 by 狼人:-), 175 阅读, 0 推荐, 收藏,
摘要:从.NET诞生之日起就有了XML类库,但是从使用上来说非常不方便。例如我们需要构造一个XML文档时,使用DOM API就要这样搞:
var xmlDoc = new XmlDocument();
var rootEle = xmlDoc.CreateElement("persons");
xmlDoc.AppendChild(rootEle);
var person1 = xmlDoc.CreateElement("person");
person1.InnerText = "Tom";
var person1Age = xmlDoc 阅读全文
艾伟_转载:.NET委托:一个C#睡前故事
2011-08-29 00:20 by 狼人:-), 206 阅读, 0 推荐, 收藏,
摘要:英文版原作者:Chris Sells(www.sellsbrothers.com) 翻译:袁晓辉(www.farproc.com http://blog.csdn.net/uoyevoli) 原文地址: http://dev.csdn.net/article/82/82644.shtm 紧耦合 从前,在南方一块奇异的土地上,有个工人名叫彼得,他非常勤奋,对他的老板总是百依百顺。但是他的老板是个吝啬的人,从不信任别人,坚决要求随时知道彼得的工作进度,以防止他偷懒。但是彼得又不想让老板呆在他的办公室里站在背后盯着他,于是就对老板做出承诺:无论何时,只要我的工作取得了一点... 阅读全文
艾伟_转载:MVC和MVP的一些思考
2011-08-29 00:20 by 狼人:-), 155 阅读, 0 推荐, 收藏,
摘要:这篇文章是我近期对MVC和MVP的一些思考,在使用MVC/MVP模式的过程中曾经走过一些弯路。呵呵,现在虽然改正了某些弯路,但不保证改正了所有的弯路(例如对渲染的理解),所以请阅读这篇文章的朋友不吝发挥你们的质疑。 写这篇文章也是想知道自己还有什么地方是错的,我的最终方案是否可行? 有交流才会有进步。你有一个苹果,我有一个苹果,我们交换后仍各有一个苹果,你有一个思想,我有一个思想,我们交换后......会有N个思想 :p 1. MVC的理解误区 以下是我以前对MVC模式的理解误区: 1. 认为Model是指失血模型的实体类(Entity),是作为View和Controller之间... 阅读全文
艾伟_转载:WCF基本异常处理模式[中篇]
2011-08-29 00:20 by 狼人:-), 153 阅读, 0 推荐, 收藏,
摘要:通过WCF基本的异常处理模式[上篇], 我们知道了:在默认的情况下,服务端在执行某个服务操作时抛出的异常(在这里指非FaultException异常),其相关的错误信息仅仅限于服务端可见,并不会被WCF传递到客户端;如果将开启了IncludeExceptionDetailInFaults的ServiceDebug服务行为通过声明(通过在服务类型上应用ServiceBehaviorAttrite特性)或者配置的方式应用到相应的服务上,异常相关的所有细节信息将会原封不动地向客户端传送。 这两种方式体现了两种极端的异常传播(Exception Propagation)机制,对于基于服务操作... 阅读全文
艾伟_转载:TreeView节点定位的另外一种方法TreeNode.FromHandle
2011-08-29 00:20 by 狼人:-), 203 阅读, 0 推荐, 收藏,
摘要:Winform 里面的TreeView是一种常见的、功能强大的控件,一般的使用大家可能都是比较熟悉的了,估计我们大多数做定位节点的时候,一般都是采用循环查找的方法。如下面的方法所示 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> foreach (TreeNode node in this.TreeView1.Nodes) { if (node.Text == "要找的节点名称") { return node... 阅读全文
浙公网安备 33010602011771号