代码改变世界

随笔分类 -  .NET Framework

深入理解 ASP.NET 动态控件 (Part 6 - 模板控件)

2008-03-26 00:39 by Cat Chen, 7746 阅读, 收藏, 编辑
摘要: 在之前的文章中,我极力推荐大家使用Repeater和MultiView这类TemplateControl,为什么呢?因为只有这样做,才算是符合MVP或MVC模式。(到底是MVP还是MVC,这视乎你选用什么呈现引擎了。)虽然我们要动态创建控件,但实际上这部分控件仍然属于View的部分,我们应该尽量采用ASPX的声明性名义来描述这些控件,避免用C#代码来创建控件、设置属性并添加为子控件。就拿最简单的例... 阅读全文

深入理解 ASP.NET 动态控件 (Part 5 - 编译实验)

2008-03-24 12:04 by Cat Chen, 6886 阅读, 收藏, 编辑
摘要: 这次的文章是一个小小的动手实验,你需要准备好Visual Studio 2005或者Visual Studio 2008,以及最新版本的Reflector。通过这次的实验,你将对ASPX与C#代码如何合并编译为一个dll代码有所理解。在实验开始之前,首先来一个小问题:如果不允许你使用ASPX,要你完全使用C#代码写一个具备复杂控件树的页面你会怎么写?把声明控件的代码都放在Page_Load里面吗?... 阅读全文

在 C# 中 ("x" == "X") 何时成立?

2007-10-31 10:02 by Cat Chen, 4330 阅读, 收藏, 编辑
摘要: 这个问题初看起来很奇怪,C#就是C#啊,一门严谨的语言,并且字符串是区分大小写的,无论是在什么情况下都有("x" != "X"),这才叫做一致性嘛。事实上,这在以前一直都是成立的,直到.NET Framework 3.5引入了Linq to Sql,这种一致性就被破坏掉了,变成依赖于环境配置了。 想象一下我们对一个Linq to Sql的DataObject编写一个Linq查询,并且where子句... 阅读全文

.NET Framework 开放源代码

2007-10-10 10:17 by Cat Chen, 9989 阅读, 收藏, 编辑
摘要: 一些.NET Framework的源代码开放了,基于MS-RL许可,并提供调试整合到VS2008当中了。从旁观者的角度来说,这是Microsoft迈向开放与社区化合作的一大步,很多人也把这当作历史性事件,然而对于一般的开发者而言呢?这事情到底有多大影响力呢?我认为对于开发者来说,不同角色的开发者遭受的影响是不同的,并且整体影响是导致分工继续细化。 .NET最内层的本质是什么?Microsoft曾经... 阅读全文

深入理解 ASP.NET 动态控件 (Part 4 - 解决问题)

2007-09-11 07:01 by Cat Chen, 7598 阅读, 收藏, 编辑
摘要: 前言 在开始写这个系列的文章之时,我想着必须深入介绍背后的原理,然后将所有需要的背景知识呈现到读者眼前,不过我现在发觉这并不是好的写作方法,要写下去对我自己来说难度也不少。最近受到Infinities Loop发布TRULY Understanding Dynamic Controls (Part 4)的刺激,我决定继续写这个系列的文章,并且领悟到了更多读者需要的是对问题的一种较为易于理解的解释,... 阅读全文

十分钟内学会:自动识别GB2312与UTF-8编码的文件

2007-03-22 14:08 by Cat Chen, 6833 阅读, 收藏, 编辑
摘要: Question在简体中文系统中,我们有时候需要打开一个保存在磁盘上的纯文本文件,例如txt,但却不知道其保存编码,该怎么办呢?如果文本只需要在Windows上显示,那就很幸运了,因为无论是GB2312还是UTF-8编码的string都能够正确显示。但如果需要输出到ASP.NET页面上就不是那么简单了,因为如果页面编码为UTF-8但纯文本文件导入的string是GB2312,那就会导致乱码,反之亦... 阅读全文

Microsoft WPF/E vs Adobe Apollo

2006-12-17 18:53 by Cat Chen, 6995 阅读, 收藏, 编辑
摘要: 整个.NET社区都在庆祝WPF/E开始CTP,且慢,看看河对面的Flash社区好像也在举行隆重的庆典哦。AVM2开放源代码这几个星期发生在Flash社区的震撼事件,包括Adobe将ActionScript Virtual Machine 2(AVM2)的核心源代码捐献给Mozilla组织,变成了一个叫做Tamarin的开源项目。Tamarin的目标是实现一个高效的ECMAScript 4th ed... 阅读全文

深入理解 ASP.NET 动态控件 (Part 3 - 页面生命周期)

2006-11-19 01:57 by Cat Chen, 10342 阅读, 收藏, 编辑
摘要: 前言 在上一篇文章中,承诺了这一篇开始讲解释器的,不过看来要按着一个大框架来写文章不那么容易,没仔细推研究过就写出来的内容似乎很应付式。所以我决定恢复我原来的写作习惯,我觉得哪部分的内容已经成熟了,那就把它release出来,没成熟的就继续留在我的draft里面。这次要讲的是页面生命周期,动态控件对此关注的当然是动态与静态控件在生命周期中加载的差别。 一般加载 虽然一般加载过程已经被说过很多次了,... 阅读全文

在 catch 块内进行 throw 的多种方式

2006-11-12 13:49 by Cat Chen, 4274 阅读, 收藏, 编辑
摘要: 参考了throw; vs. throw ex; Here's the difference!我才知道在catch块内的throw;和throw ex;是有区别的,以前都不知道可以直接写throw;呢。 这两者的主要不同在于输出的stack trace上: 如果你直接使用throw;,那么stack trace就和根本不存在这个catch块的时候一样,显示错误根源是真正抛出异常的地方。 如果你使... 阅读全文

ASP.NET - 解决一个大难题的同时引入另一个更大的难题

2006-11-11 02:19 by Cat Chen, 3938 阅读, 收藏, 编辑
摘要: 前言 ASP.NET的优点我说过很多次了,也就是各个控件独立负责自己内部的逻辑,这是一个好事情,因为它解决了原本ASP处理逻辑耦合度高的问题。然而这是需要代价的,那就是引入ASP.NET页面生命周期,随着控件的多层嵌套,应用的复杂度增加,我们再次陷入泥潭! 问题 其实这个文章题目我两个月前就写下了,可是一直没想写完它,直到今天我在这个泥潭中泡了几个小时,于是决定先从泥潭中跳出来把文章写完,再跳进去... 阅读全文

深入理解 ASP.NET 动态控件 (Part 2 - 编译过程)

2006-11-05 20:55 by Cat Chen, 8583 阅读, 收藏, 编辑
摘要: 前言 要深入理解ASP.NET动态控件,首先就要深入理解整个ASP.NET对页面的处理过程,由你书写好一个ASPX文件(可能还有一个code-behind文件)到你在浏览器中看到的HTML页面,这中间到底发生了什么事。这其中的第一步就是解释ASPX文件并进行编译,也就是这篇文章要讨论的内容。 由于ASP.NET编译本身就是一个大话题,所以我决定在本系列文章把这个题目再细分成几篇文章来写。开头第一篇... 阅读全文

深入理解 ASP.NET 动态控件 (Part 1 - 感性认识)

2006-10-31 13:55 by Cat Chen, 9165 阅读, 收藏, 编辑
摘要: 正如我在《我喜欢的教材与我讨厌的教材》中所说的,我讨厌那种标题之后直入理论部分并开始写“定理1、定理2、定理3”的做法,所以在我自己的文章也绝对不会这样写。我认为感性认识是理性认识不可缺乏的基础条件,所以在很理论性的解释ASP.NET页面生命周期之前,先通过一些大家可能都遇到过的例子给大家一个感性认识。 动态控件遇到的第一类问题就是跨页面生命周期时无法自动保存,你必须每次手动创建。举个简单的例子,... 阅读全文

.NET 里 String 的特性

2006-10-22 15:47 by Cat Chen, 1525 阅读, 收藏, 编辑
摘要:  String是指System.String,同时string关键字也是System.String的别名。这里要说的特性都是一些让不理解的人容易犯错的特性。String的第一个特性就是它是引用类型,但很多时候表现起来却像值类型,这是第一个让人容易犯错的地方。String有一个不可破坏的特性(immutable),或者简单叫做只读特性,这意味任何改变String的操作其实都没有改变原本那个... 阅读全文

.NET 的灵魂是什么?

2006-10-22 15:37 by Cat Chen, 1208 阅读, 收藏, 编辑
摘要: 这是个很有趣的问题,但我觉得Microsoft也不能正面回答这个问题,估计他们会想rephrase这个问题,然后用他们的官方口吻回答。 先说说为什么会提这样的问题。那天和Piggest在逛购书中心,她说那些列很多Photoshop特效制作方法的书看再多都没有用,因为你看一个制作方法就只学到了这一个,而看《选择的艺术》这样的书,你才能领会到Photoshop的核心思想和使用方式,之后你就懂得如何灵活... 阅读全文