摘要:
得到函数名: System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(); this.Text = st.GetFrame(0).ToString(); 得到代码行,源代码文件名: StackTrace st = new StackTrace(new StackFrame(true));Console.W... 阅读全文
摘要:
System.Threading.Timer 是一个使用回调方法的计时器,而且由线程池线程服务,简单且对资源要求不高。 只要在使用 Timer,就必须保留对它的引用。对于任何托管对象,如果没有对 Timer 的引用,计时器会被垃圾回收。即使 Timer 仍处在活动状态,也会被回收。当不再需要计时器时,请使用 Dispose 方法释放计时器持有的资源。 使用 TimerCallback 委托指定... 阅读全文
摘要:
一、类型的逻辑分组 从CLR的角度来看,只有两种类型:引用类型和值类型。但从框架设计来说,可以进行更细致的分类 1、引用类型,包括:类、静态类、集合、数组、异常、属性 2、值类型,包括:枚举和结构 3、接口 二、类型和命名空间 在设计一个大型框架之前,应该先决定如何把功能划分到一组功能域中,这些功能域由命名空间表示。命名空间的设计过程是一个迭代的过程,会随着一个一个版本中新的类型的加入... 阅读全文
摘要:
一、大小写约定1、标识符的大小写规则 不要用下划线来区分单词,也不要在标识符中使用下划线。 PascalCasing约定被用于除参数名之外的所有标识符。标识符中的每个单词的首字母大写。 camelCasing约定仅用于参数名,除第一个单字外,所有单词的首字母大写。 二、通用命名约定 1、标识符名字的选择 并不是所有编程语言都区分大小写,所以不要仅仅以大小写来区分不同的名字 框架中标识符... 阅读全文
摘要:
一、场景驱动设计原则 设计框架时因该把注意力集中在一些常用场景,使整个设计过程由场景来驱动。场景分为常用场景和高级场景。(“场景”即用户使用Framework进行开发,调用API的情景) 在设计框架时,必须从一组使用场景以及实现这些场景的样例代码开始。 要为每个主要的特性域(feature area)定义一些最常用的场景 。 要确保使用场景与适当的抽象层次相对应。场... 阅读全文
摘要:
代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.IO;usingSystem.Xml;usingSys... 阅读全文
摘要:
代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--usingSystem;namespaceUBISerialsController{///<summary>///Class1的摘要说明。///</summary>public... 阅读全文
摘要:
1.创建C#工程 创建一个EXE工程,可以是WinForm或者命令行格式的。添加对System.ServiceProcess.dll和System.Configuration.Install.dll的引用。2. 创建服务类 新增一个类,该类型继承System.ServiceProcess.ServiceBase类型,在构造函数中设置ServiceName 属性来指明该服务的名称。然后重载它的O... 阅读全文
摘要:
将控件置于顶层:BringToFront()方法将控件置于底层:SendToBack()方法 阅读全文
摘要:
有时候我们要对时间进行转换,达到不同的显示效果 默认格式为:2005-6-6 14:33:34 如果要换成成200506,06-2005,2005-6-6或更多的该怎么办呢 我们要用到:DateTime.ToString的方法(String, IFormatProvider) using System; using System.Globalization; String format="D";... 阅读全文