在路上的牛 2008-04-11 20:42
写博客是私人的事情,但是要发在首页就应该服从管理员的安排,不然首页很容易就乱套了。
我想其他地方的人对西安.net俱乐部并不会很关注,何况文章中有大段的聊天内容。这和看待西安的态度无关。
在路上的牛 2008-03-26 00:06
写得很详细,学习了。ASP.NET其实也提供了使用Session保存ViewState的类,可以不把ViewState保存在页面中。
在路上的牛 2008-03-25 09:56
@Cat Chen
在接口上提供默认实现一般情况下并不需要,不应该滥用,但是这种方式在某些情况下是有价值的。
微软自己也有这样的例子,System.Linq中的IQueryable<T>就是一例,它自己没有声明任何方法,但是在Queryable类中为IQueryable<T>提供了大量的扩展方法。我自己也感觉以前的框架中某些接口是可以使用一些扩展方法的。
使用这样的方法,需要对接口的设计有比较全面的考虑。
在路上的牛 2008-03-24 22:43
这个方法是有很多局限。而且扩展方法是容易把人搞混,当初看Linq的代码,一个接口的实现方法半天没找到,后来才想起可能会在某个静态类的扩展方法中。。。
在路上的牛 2008-03-24 21:27
@Dflying Chen
因为很多时候,对接口的方法我们是可以提供一个默认的实现的,如果不提供这样一个抽象类,那每个实现接口的类都要写上许多一样的方法实现,是个不好的设计。System.Data下的许多类都是按照接口 - 抽象类 - 具体类的方式设计的,比如IDbCommand - DbCommand - SqlCommond/ODBCCommand/OLECommand
再比如在ORM框架中,我们可以为所有的DataObject设计1个Interface,里面可能有基本的DataState, AccpetChange(),Original...,接下来也会提供一个抽象类来实现这些方法,实际的业务对象从此抽象类派生,而不是每个业务对象都为这些功能写一套一样的实现代码。