摘要:1.用Pascal大小写规则命名方法、类型、结构、接口、委托、枚举、枚举项、属性、事件等。 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->publicclassDataGrid
{
publicvoidDataBind()
{
}
} 2.用Camel大小写规则命名所有变量、字段和参数。 可采用Pascal也可采用Camel大小写规则的:常量、控件ID。
Code highlighting produced by Actipro Cod.. 阅读全文
艾伟:Visual Studio 2008 可扩展性开发(六):操作Solution Explorer
2011-08-29 00:00 by 狼人:-), 222 阅读, 0 推荐, 收藏,
摘要:前言 在可扩展性开发(五)中,我介绍了对于Solution、Project、ProjectItem的基本操作。可以认为它们面向的是解决方案内容的物理(文件)表示,我们需要使用VS提供的解决方案管理器(Solution Explorer)来管理它们。毫无疑问,解决方案管理器是VS中最重要的UI元素之一,本文将介绍对它的操作。
工具窗口内的层次结构 如果你观察一下解决方案管理器和服务器管理器(Server Explorer),就会发现它们都使用树形结构来表现背后的数据。在AOM中,UIHierarchy、UIHierarchyItems和UIHierarchyItem用于表示这样的层次结构。U.. 阅读全文
艾伟:警惕匿名方法造成的变量共享
2011-08-29 00:00 by 狼人:-), 170 阅读, 0 推荐, 收藏,
摘要:匿名方法 匿名方法是.NET 2.0中引入的高级特性,“匿名”二字说明它可以把实现内联地写在一个方法中,从而形成一个委托对象,而不用有明确地方法名,例如: static void Test()
{ Action<string> action = delegate(string value) { Console.WriteLine(value); }; action("Hello World");
} 但是匿名方法的关键并不仅于“匿名”二字。其最强大的特性就在于匿名方法形成了一个闭包,它可以作为参数传递到另一个方法中去,但同时也能访问方... 阅读全文
艾伟:用MSChart展示多维数据集
2011-08-29 00:00 by 狼人:-), 280 阅读, 0 推荐, 收藏,
摘要:之前谈到过用MSChart可以比较直观方便的实现对多维数据集的展示,做得比较粗略。这次详细介绍下我的经验,并提供主要的试验代码段。 有必要强调一下,对多维数据集的展示,层次性是非常必要的。多维数据集本身就是带有层次结构的,如何直观而又不产生歧义的正确展示出其原本的数据集合结构,成为众多据仓库展示工具软件开发商关心的问题。在选型方面,目前市场上已经有比较多的选择,相当多的第三方图形控件就已经直接支持多维数据集的展示,即直接把CellSet结果赋给该控件的DataSource即可。但是这些目前毕竟是市场化的东西,作为个人开发学习没有必要去购买---试用版的由于其种种限制,给人感觉很不舒服。 ... 阅读全文
艾伟:改进的脏话审查方案
2011-08-29 00:00 by 狼人:-), 144 阅读, 0 推荐, 收藏,
摘要:导言
我经常光顾cnbeta,那里的评论很精辟,有时我也会忍不住评上两句,但近来突然发现发布评论都必须经过审核才会显示了,这让我感到非常扫兴。由此我又想起了此前我曾讨论过的“非法内容核查方法”,我想这种人机结合的审核方式应该会比较适合现在的cnbeta吧。
而现在我已经对此方案有了更深、更好的思路了,想在此分享出来,和大家探讨一下,我将在此逐步解析整个审查的流程:
准备工作
要审查脏话,首先需要创建对应的审查规则,每条规则需要提供以下基本信息:
1. 表达式:用于审查内容是否匹配的正则表达式。使用正则的原因在于其灵活性,常规的纯文本检索虽然快,但遇到干扰符等情况时束手无策,而正则就可以轻松解决 阅读全文
艾伟:.Net 下跟踪线程挂起和程序死循环
2011-08-29 00:00 by 狼人:-), 308 阅读, 0 推荐, 收藏,
摘要:.Net 下调试跟踪线程挂起和程序死循环 作者:Eaglet .Net 下的程序调试相对C/C++要简单很多,少了那些令人头疼的指针越界的问题。不过当你的程序遇到如下问题时,依然非常棘手: 1. 进程异常终止。解决方案见 .Net 下未捕获异常的处理 2. 内存泄漏或者内存申请后程序始终没有释放。解决方案见 用 .NET Memory Profiler 跟踪.net 应用内存使用情况--基本应用篇。如果通过自己编写的程序监控,我将在以后的文章中阐述。 3. 线程因未知原因挂起,比如死锁。 4. 程序死循环。 本文将阐述如果编写程序对后两者故障实时跟踪并报告。 首先我们需要一... 阅读全文
艾伟:Fiddler:Web调试代理
2011-08-29 00:00 by 狼人:-), 304 阅读, 0 推荐, 收藏,
摘要:Fiddler是一款免费的记录主机HTTP(S)通信的代理(proxy),具有丰富的用户界面,支持监察请求和响应、设置断点,以及修改输入输出数据。同时,它也支持多种数据转换和预览,比如解压缩GZIP、DEFLATE,或者BZIP2格式的文件,以及在预览面板里显示图片。 Fiddler 可以从此处免费下载,目前稳定版本是v2.2.0.7。最近更新的beta v2.x版本对用户界面做了加强,并修订了一些缺陷。对于仍然使用 .NET Framework 1.1的开发人员,Fiddler 也提供了v1.3版本,只不过该版本已经不再被鼓励使用。 Fiddler被主要用来查看单次请求或者响应的... 阅读全文
艾伟:尽可能摆脱对HttpContext的依赖
2011-08-29 00:00 by 狼人:-), 180 阅读, 0 推荐, 收藏,
摘要:我们继续《ASP.NET MVC单元测试最佳实践》,今天主要谈论HttpContext的依赖问题。 在ASP.NET中进行单元测试的天敌便是HttpContext,它是ASP.NET的核心,极端复杂,却无法进行Mock1——可见微软能够写出那么庞大的ASP.NET框架真不那么容易。现在这个状况改善了不少,因此大家已经可以使用System.Web.Abstractions.dll了,这个程序集中提供了对于HttpContext的抽象,也就是HttpContextBase抽象类。因此在ASP.NET MVC中,各种组件均依赖于HttpContextBase而不是HttpContext。这是... 阅读全文
艾伟:WinForm控件开发总结(七)-----为复杂属性的子属性提供编辑功能
2011-08-29 00:00 by 狼人:-), 141 阅读, 0 推荐, 收藏,
摘要:前面的几篇文章中,我们给控件添加一个复杂的类型Scope,并且给它的类型提供的一个类型转换器,现在我们可以在属性浏览器中编辑它的值,并且它的值也被串行化的源代码里了。但是你有没有发现,在属性浏览器里编辑这个属性的值还是不太方便。因为属性只是“10,200”这种形式的,所以,你必须按照这种格式来修改,一旦格式错误就会引发异常,比如输入一个“10200”。我们期望这个属性的每一子属性都能够被独立的编辑就好了,这并非不能实现,而且实现还很简单。 为了在属性浏览器里能够独立的编辑子属性,我们还要重写两个方法:GetPropertiesSupported()和GetProperties();下面是Sco 阅读全文
艾伟:WinForm控件开发总结(五)-----为控件的复杂属性提供类型转换器
2011-08-29 00:00 by 狼人:-), 160 阅读, 0 推荐, 收藏,
摘要:上一篇文章我已经介绍了TypeConverterAttribute元数据的作用,本文将通过代码向你展示具体的实现。在这个例子中,我要给控件添加一个复杂的属性,这个属性对这个控件没有什么功用,纯粹是为了演示,有些牵强附会了。 现在在前一篇文章中的创建的控件代码中添加一个Scope属性:
[Browsable(true)]publicScopeScope{get{return_scope;}set{_scope=value;}}
这个属性的类型是Scope类,代码如下:
publicclassScope{privateInt32_min;privateInt32_max;publicScope() 阅读全文
艾伟:WinForm控件开发总结(四)-----控件属性的串行化
2011-08-29 00:00 by 狼人:-), 182 阅读, 0 推荐, 收藏,
摘要:前一篇文章介绍了常用的设计时Attribute。其中BrowsableAttribute,CategoryAttribute,DescriptionAttribute,DefaultPropertyAttribute,DefaultEventAttribute都是比较简单的,也是可有可无,但是为了提供更好的用户体验这些Attribute最好不要省掉,如果你对这些Attribute还不熟悉,可以参考我前一篇文章的描述或者查看MSDN,这里我就不在赘述了。 下来我们主要介绍一下DesignerSerializationVisibilityAttribute和TypeConverterAttribu 阅读全文
艾伟:WinForm控件开发总结(六)-----控件属性类型转换器代码详解
2011-08-29 00:00 by 狼人:-), 228 阅读, 0 推荐, 收藏,
摘要:在上一篇文章,我为控件添加一个一个复杂属性,并且为这个属性的类型的编写了一个类型转换器,现在我们来看看这个类型转换器的代码,并解释一下这些代码的意义。 要实现一个类型转换器,我们必须要重写(override)四个方法: CanConvertFrom()――根据类型参数进行测试,判断是否能从这个类型转换成当前类型,在本例中我们只提供转换string和InstanceDescriptor类型的能力。 CanConvertTo()――根据类型参数进行测试,判断是否能从当前类型转换成指定的类型。 ConvertTo()――将参数value的值转换为指定的类型。 ConvertFrom()――串换参数v 阅读全文
艾伟:WinForm控件开发总结(三)------认识WinForm控件常用的Attribute
2011-08-29 00:00 by 狼人:-), 185 阅读, 0 推荐, 收藏,
摘要:在前面的文章里我们制作了一个非常简单的控件。现在我们回过头来看看这些代码透露出什么信息。 这个类是直接从Control类派生出来的,自定义控件都是直接从Control类派生出来的。这个类定义了一个属性TextAlignment,用来控制文本在控件中显示的位置:
[Category("Alignment"),Description("Specifiesthealignmentoftext.")]publicContentAlignmentTextAlignment{get{returnalignmentValue;}set{alignmentValue=v 阅读全文
艾伟:WinForm控件开发总结(二)------使用和调试自定义控件
2011-08-29 00:00 by 狼人:-), 269 阅读, 0 推荐, 收藏,
摘要:在上一篇文章里我们创建了一个简单的控件FirstControl,现在我来介绍一下怎么使用和调试自己的控件。我希望将过程写的尽可能的详细,让想学习控件开发的朋友容易上手,高手们见谅。 在同一个solution里添加一个Windows Application工程(在Solution Explorer里右键点击CustomControlSample solution选择Add->New Project…),命名为TestControl。VS会为你自动生成一个Form,文件名为Form1.cs。在Solution Explorer里双击Form1.cs文件进入到Form设计界面。现在我们将Fir 阅读全文
艾伟:WinForm控件开发总结(一)------开篇
2011-08-29 00:00 by 狼人:-), 145 阅读, 0 推荐, 收藏,
摘要:我本人不是专业的控件开发人员,只是在平常的工作中,需要自己开发一些控件。在自己开发WinForm控件的时候,没有太多可以借鉴的资料,只能盯着MSDN使劲看,还好总算有些收获。现在我会把这些经验陆陆续续的总结出来,写成一系列方章,希望对看到的朋友有所帮助。今天我来开个头。 其实开发WinForm控件并不是很复杂,.NET为我们提供了丰富的底层支持。如果你有MFC或者API图形界面的开发经验,那么学会WinForm控件可能只需要很短的时间就够了。 自己开发的WinForm控件通常有三种类型:复合控件(Composite Controls),扩展控件(Extended Controls),自定... 阅读全文
浙公网安备 33010602011771号