本文讲述我认为对 c# 程序员最重要的 10 个提示, 每个提示都会有一段对应的代码, 对 新手来说也很容易掌握。 1: 为非公开的方法编写测试 你尝试过为组件的非公开方法写测试么? 很多开发者都没有写过, 因为这些方法对测试项 目来说是不可见的。 c# 可以通过在 AssemblyInfo.cs 中添加下面的标记 (InternalsVisibleToAttribute) , 让内部成员对其它组件可见。 //Make the internals visible to the test assembly [assembly: InternalsVisibleTo("MyTestA... 阅读全文

iOS 开发中经常看到 CFBundleShortVersionString 和 CFBundleVersion 两个都可以用来标识应 用版本号的变量, 究竟应该用哪个呢? 下面就一探究竟。 CFBundleShortVersionString CFBundleShortVersionString (String - iOS, OS X) 表示 bundle 发布版本号, 标识应 用的一个发布迭代。 发布版本号是由三个用句点 . 分割的整数组成的字符串, 第一个数字是主版本 号,表示重要的功能或重大的更新, 第二个数字表示次要功能的更新,第三个数字表示维护更新, 具体规则也可以参考... 阅读全文

什么是 Scss Scss 是 CSS 的扩展, 在保证兼容性的基础上, 允许使用变量、 嵌套、 混合、 导入等特性, 在编写大量的 CSS 文件时很有帮助。 特色 完全兼容 CSS3 在语法上扩展了变量、 嵌套以及混合等 操作颜色以及其它的有用的函数 高级特性, 比如针对类库的控制声明 格式良好并且可控制的输出 Firebug 集成 基本语法 Scss 是 CSS3 的扩展, 在 CSS3 的基础上, 添加了下面几个重要的特性: 变量 Scss 使用 $ 符号来定义变量, 支持的变量类型有 数字(可带单位)、 字符串 、颜色 以及 布尔值 等,... 阅读全文

1、不要浪费时间找最佳环境。 许多学生认为只要找到了最佳的学习环境,学习就会变得轻而易举,所以他们花了大量的时 间找寻和尝试不同的地方,寝室、咖啡馆、图书馆、草坪……大把的时间浪费于此。更糟的是, 你会觉得,除非你找到理想的学习地点,否则你根本无法学习。有没有什么好办法?找一个 相对安静的地方开始学习。一旦你投入到学习中去,你会觉得周围的环境还不错。 2、不要把准备工作当学习。 一些学生常常‌‌“准备好要学习‌‌”,却从没有真正开始。不要把清理桌子、整理电脑文件和‌‌“准 备好要学习‌‌”当成学习。即使在学习的地方,如果你只是泡在Facebook上,发状态说我正在 学习,也不是... 阅读全文

Android 4.4 带来了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏、 虚拟按键动态隐藏, 应用可 以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 “身临其境” 的体验。 Android 4.4 中提供了 IMMERSIVE 和 IMMERSIVE_STICKY 标记, 可以用这两个标记与 SYSTEM_UI_FLAG_HIDE_NAVIGATION 和 SYSTEM_UI_FLAG_FULLSCREEN 一起使用, 来实现沉 浸模式。 注意: 这些标 记在Xamarin.Android 中被映射为 Android.Views.SystemUiFlags... 阅读全文

从源代码编译最新版本的 mono 网上已经有很多从源代码安装 mono 的资料了, 所以就不再啰嗦了, 没有做过的可以参考这两篇文章: 在 Ubuntu Server 上安装配置 Mono 生产环境 CentOS 6.3下 安装 Mono 3.2 和Jexus 5.4 推荐用 git 从源代码获取 mono 源代码的方式来编译安装, 以后更新也很方便。 我获取 mono 最新版 源代码编译安装之后, 版本信息如下图所示: 对于某些 linux 发行版, 可能还没有下列网站的 https 证书, 因此需要导入并同步一下几个网站的 https 证书, 否则无法继续后面... 阅读全文

.Net 环境下测试 数据库环境以及 NHibernate 配置 SQL Server 环境为 VS2013 自带的 localdb v11.0, 对应的 NHibernate 配置为: var cfg = new Configuration(); cfg.SetProperty(Environment.ConnectionString, "Data Source=(localdb)\\Projects;Initial Catalog=TestDB;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServ... 阅读全文

结构 说明 Provide a surrogate or placeholder for another object to control access to it. 为其他对象提供一个代理以控制对这个对象的访问。 适用条件 远程代理: 为一个对象在不同的地址空间提供局部代表; 虚代理: 根据需要创建开销很大的对象; 保护代理: 控制对原始对象的访问; 智能指引: 取代了简单的指针, 并在访问对象时执行一些附加操作。 实现 public interface IImage { void DisplayImage(); } public c... 阅读全文

结构 说明 Use sharing to support large numbers of similar objects efficiently. 通过共享以便有效的支持大量小颗粒对象。 适用条件 一个程序使用了大量的对象; 完全由于使用大量的对象, 造成了很大的存储开销; 对象的大多数状态都可以变为外部状态; 如果删除对象的外部状态, 那么可以使用相对较少的共享对象取代很多组对象; 应用程序不依赖于对象标识, 由于享元对象可以被共享, 所以概念上明显有别的对象, 标识测试将返回真值; 实现 public interface ICoffeeOr... 阅读全文

结构 说明 Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use. 为子系统中的一组接口提供一个一致的界面, 外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 适用条件 为一个比较复杂的子系统提供一个简单的接口; 将客户程序与子系统的实现部分分离, 提高子系统的独立性和可移植性; 简化子系统间的依赖关系。 ... 阅读全文

结构 说明 Attach additional responsibilities to an object dynamically keeping the same interface. Decorators provide a flexible alternative to subclassing for extending functionality. 向某个对象动态地添加更多的功能。修饰模式是除类继承外另一种扩展功能的方法。 适用条件 在不影响其他对象的情况下, 以动态且透明的方式添加单个对象的功能; 处理那些可以撤销的功能; 不能采用生成子类的方法扩充... 阅读全文

结构 说明 Compose objects into tree structures to represent part-whole hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly. 把多个对象组成树状结构来表示局部与整体,这样用户可以一样的对待单个对象和对象的组合。 适用条件 四则运算、逻辑运算以及 SQL 语句等都可以用组合模式表示; 命令: 一个命令经常可以有若干个子命令表示; 事务: 最典型的事务时测试用... 阅读全文