Effective C# 原则35:选择重写函数而不是使用事件句柄

JerryXia 发表于 , 阅读 (1,971)
很多.Net类提供了两种不同的方法来控制一些系统的事件。那就是,要么添加一个事件句柄;要么重写基类的虚函数。为什么要提供两个方法来完成同样的事情呢?其实很简单,那就是因为不同的情况下要调用为的方法。在派生类的内部,你应该总是重写虚函数。而对于你的用户,则应该限制他们只使用句柄来响应一些不相关的对象上的事件。例如你很了一个很不错的Windows应用程序,它要响应鼠标点下的事件。在你的窗体类中,你可以选择重写OnMouseDown()方法:public class MyForm : Form ... 阅读全文

C#实现模拟可以继承的枚举类

JerryXia 发表于 , 阅读 (2,109)
自己本来想写可被继承的自定义枚举类的,可是写完了后发现其实不行,或者说我自己水平不高。。。。public class EnumBase<T> { protected string _name; protected T _value; public override string ToString() { return _name.ToString(); } /// <summary> ///... 阅读全文

项目各环境配置文件的读取

JerryXia 发表于 , 阅读 (1,678)
json配置文件Asp.Net本身对配置文件的读取有个程序集,即System.Configuration,旗下有个ConfigurationManager类来获取写在Web.config或者是App.config中的配置。但我在实际开发中遇到一个问题,它无法解决程序运行在各个环境中时自动加载相应环境的配置文件,所以这个库就产生了Web.json Web.Debug.json Web.Test.json Web.Release.json 只要在Web.config定义一个程序当前运行环境的l... 阅读全文

正则表达式初学

JerryXia 发表于 , 阅读 (1,945)
对于开发人员来说,正则表达式是一个非常有用的功能。它提供了查找,匹配,替换句子,单词,或者其他格式的字符串。在这篇文章里,我已经编写了15个贼有用的正则表达式,WEB开发人员都应该将它收藏到自己的工具包。开始使用正则表达式对初学者来说,正则看起来很难学习和使用。事实上他们并非你想想的那么难,在我们深入掌握正则之前,先迅速看看这些入门基础:正则表达式语法正则表达式 将会匹配foo ——————字符串“foo”^foo ——————以“foo”开头的字符串foo$ ——————以... 阅读全文

CMS系统评论模块Cache优化

JerryXia 发表于 , 阅读 (1,964)
如上图中所示,缓存模块设计得比较巧妙,以显示页面为单位缓存数据,因为评论页面依照提交时间降序排列,每新增一条评论,所有帖子都需要向下移动一位,所以缓存格式设计为每两页数据一个文件,前后相邻的两个文件有一页数据重复,最新的缓存文件通常情况下不满两页数据。假设评论总数95条,每页显示20条时的页面缓存结构,此时用户看到的第一页数据读取自“缓存页4”的95~76,第二页数据读取自“缓存页3”的75~56,以此类推。这样发帖动作对应的缓存更新可简化为一次文件追加写操作,效率最高。而且可保证任意评论... 阅读全文

Asp.Net企业开发项目结构与分层

JerryXia 发表于 , 阅读 (2,012)
这里以Asp.Net MVC开发的基于三层架构项目为基础基本准则:三个层之间的调用要严格按照“上层只能调用直接下层,不能够越权,而下层也不能够调用自己的上层”。展现层:用来显示数据或从UI上获取数据;该层主要是用来处理数据显示和特效用的,不包括任何业务逻辑。01.UIWeb(前台Web站点)Wcf(Wcf服务站点)业务层:业务层包含了系统中所有的核心业务逻辑,不包括任何跟数据显示、数据存取相关的代码逻辑。02.Bussiness Login LayerServices(服务层,隔离显示层来... 阅读全文

Effective C# 原则34:创建大容量的Web API

JerryXia 发表于 , 阅读 (2,162)
交互协议的开销与麻烦就是对数据媒体的如何使用。在交互过程中可能要不同的使用媒体,例如在交流中要不同的使用电话号码,传真,地址,和电子邮件地址。让我们再回头来看看上次的订购目录,当你用电话订购时,你要回答售货员的一系列问题:“你可以把第一项填一下吗?” “这一项的号码是123-456” "您想订购多少呢?" "三件" 这样的问题一直要问到销售人员填写完所有的信息为止,例如还要知道你的订购地址,信用卡信息,运送地址,以及其它一些必须的信息来完成这比... 阅读全文