RSS 2.0 Feed
2006-02 Entries
摘要:FtpClient Library for .NET 2.0: Workspace Home 在我还在读大学时,曾用.NET 1.1/VS.NET 2003为FTP客户端的需求封装了一个FtpClient类库,基于Managed Socket。经过了极其简陋的1.0和2.0版,其3.0稳定版在我毕业前夕发布,之后近两年时间都没有为它继续升级。这是因为虽然之后又发现了几个bug,但后来随着.NET 2.0 beta发布,看到它居然已经内置FTP功能了,所以停止了更新。不过,我现在觉得.NET 2.0内置的FTP功能只是一个较浅的包装,除了一般的简单的FTP任务,在别的情景要用它还得自己编写大量的代码(比如需要自己实现FTP对列等)。 所以年前又花了几个礼拜的时间把它升级到了4.0。它现在依然是开源的,基于GPL(GNU General Public License)协议,发布在GotDotNet.com。 FtpClient Library 4.x的目标是为一个FTP客户端应用程序提供底层支持 — 实际上它的GUI部分已经在实现中了,模仿了FlashFXP界面。这样,对于简单的FTP任务,这个类库可能有点过于rich了 — 你直接用FtpWebRequest/FtpWebResponse类即可。 实际上这个项目的想法已经很久了,只是前面半年时间我都在和思归一起翻译我们的书:《.NET企业服务》,讲的是Managed COM+,可以算是System.EnterpriseService的大全了。在翻译完毕之后我才能抽出时间来继续维护这个项目。不过现在也不算晚吧,嗯。 BTW,这本书译稿均已提交给了博文视点的编辑,但何时出版还不清楚。我估计最快也得下个月吧,慢点可能要到五月,到时候我再来更新BLOG吧。...[阅读全文]

posted @ | Feedback (9) | Filed Under [ Patterns and Practice ]

摘要:DebuggerDisplayAttribute是.NET 2.0带来的一个新的功能,它可以让你定义一个对象在调试器中的文本表示。这个feature本来可以为调试带来很多方便,没想到弄得我郁闷了好多天 有了DebuggerDisplayAttribute,举例说,代码可以这么写:     [DebuggerDisplay("{Name}")]    class Person    {        string _name;        public string Name        {            get { return _name; }            set { _name = value; }        }    } 这样调试器里面显示Person对象时就会用它的Name属性显示,像这样: 不过... 你要是忘了给属性赋值,比如这里忘了给Name属性赋值,那调试器就是这个样子: 我就是在这里愣了好几天,这段简单的代码可能一看就知道是什么问题了;但我手上的一个东西偏偏就是给了个NullReferenceException,我单步跟踪时,居然发现C#的new操作符也返回了null!当然,这是被DebuggerDisplayAttribute骗了。而后来发现是因为别的原因抛出的NullReferenceException(所谓无巧不成书)。 后来还把我的代码发给在微软的一个朋友看(我心说用这个bug可以换个XBOX什么的~),不过到现在也没找到问题,似乎也被这个DebuggerDisplayAttribute骗了... ...[阅读全文]

posted @ | Feedback (0) | Filed Under [ Inside CLR ]