MyExplicitClass would work only with the interface: //The following line would not work. MyExplicitClass myObject = new MyExplicitClass(); myObject.MyMethod(""); //This will work IMyInterface myObject = new MyExplicitClass(); myObject.MyMethod(""); </CODE> 4、DataTable.HasRows 它不属于任何框架,但通过扩展方法很容易模仿这样一个方法,它不会消除检查数据表对象是否为空或行数的原始代码,但它可以简化应用程序的代码,下面是一个代码片段: <CODE> public static bool HasRows(this DataTable dataTable) { return dataTable.IsNull() ? false : (dataTable.Rows.Count > 0); } public static bool IsNull(this object o) { return (o == null); } To use: If(dataTable.HasRows()) { … } </CODE> 其它规则仍然和扩展方法相同。 5、在类中编写“Override”方法的快速方法 在代码编辑器中输入override,按空格键,你将会看到一串基于类的可覆写方法。 6、强大的Path.Combine Path.Combine凭借强大的功能消除了尾斜线和路径相关的问题,简单易用,让路径字符串更连续,它包含一个字符串路径参数. 你不用担心路径中的有效分隔符或空格,完全不用你处理路径合并时的字符串连接。 7、使用扩展的配置文件 感谢app.config(针对应用程序)和web.config配置文件,使我们可以处理复杂的应用程序级设置,但是我们仍然要处理不同环境设置面临的各种问题,这里指的是开发、测试和生产环境的设置。 我们不得不恢复到一个特定的环境以便进行分析、测试或调式部分代码,在这个过程中,每一次设置和调整都很乏味。 例如,每一次恢复可能都要重新设置ConnectionStrings(连接字符串),现在你可以通过外部文件引用使用ConfigSource属性来解决这个问题。例如,下面的代码引用了一个deveploment.config外部配置文件。 <connectionStrings configSource="configs\ development.config" /> 你还可以在AppSettings设置小节使用这个有用的属性。 8、ToTitleCase 这个方法可以将每个单词的首字母转换为大写,剩下的字母转换为小写,例如,“look below for a sample”将被转换为“Look Below For A Sample”,TextInfo是System.Globalization命名空间的一部分,但它存在以下问题: 当前的文化 如果输入字符串全部是大写 下面的扩展方法同时考虑了这两个缺陷。 <CODE> public static string ToTitleCase(this string inputString) { return Thread.CurrentThread.CurrentCulture.TextInfo. |