摘要: Ninject学习笔记(一) Ninject学习笔记(一)理解依赖注入DI概念什么是DI?DI是如何工作的?什么是DI容器使用Ninject如何使用NinjectNinject对象生命周期暂时范围单例范围线程范围请求范围自定义范围Ninject模块从xml配置依赖(Ninject XML扩展)Ninject约定(Ninject Convention扩展)选择程序集选择组件选择服务类型绑定配置 ... 阅读全文
posted @ 2017-03-21 15:14 qianzi 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 依赖注入模式与反模式 依赖注入模式与反模式依赖注入模式构造器注入属性注入方法注入上下文环境注入依赖注入反模式控制狂Bastard注入受限的构造服务查找器DI重构将运行时的值映射到抽象使用短生命的依赖解决循环依赖处理过多的构造器依赖参数 依赖注入模式 构造器注入 最重要的DI模式。 如何工作:一个私有的只读引用指向依赖,一个带参的构造器初始化该引用。 Tip1: 保持构造器逻... 阅读全文
posted @ 2017-03-21 15:13 qianzi 阅读(1610) 评论(0) 推荐(0) 编辑
摘要: 某个ItemsControl与它的项源不一致 异常 原因 UI中DataGrid绑定的集合在另一个线程中增加的过快,导致两个项源不一致。解决方案是加锁。 解决 解决步骤如下: 加一把锁 private readonly object _busABcDatasLock = new object();public AsyncObservableCollection BusAbcD... 阅读全文
posted @ 2016-12-19 15:22 qianzi 阅读(4074) 评论(0) 推荐(0) 编辑
摘要: C# 3进化的数据访问之智能的编译器 C# 3进化的数据访问之智能的编译器自动实现的属性隐式类型的局部变量——var隐式类型的限制隐式类型的优缺点简化的初始化——对象初始化器隐式类型的数组匿名类型总结 C# 2的两个重要特性要求CLR做出了相应的改变,但是C# 3引入的特性并没有改变CLR,只是框架库扩充了LINQ、基类库引入了几个新特性。C# 3的所有特性都是智能的编译器帮你做了更多的事。 ... 阅读全文
posted @ 2016-11-29 15:04 qianzi 阅读(335) 评论(0) 推荐(0) 编辑
摘要: C# 2的重大改进之可空类型 C# 2的重大改进之可空类型C# 1如何解决可空类型C# 2的可空类型可空类型的装箱与拆箱Nuallable可空类型的工具类C# 2为可空类型提供的语法糖——?修饰符C# 2中as操作符可以用于可空类型空合并操作符——?? 在操作数据库时,经常需要为DateTime设置可空值。在C# 1时是无法为DateTime赋值为null的。 C# 1如何解决可空类型 三... 阅读全文
posted @ 2016-11-07 21:34 qianzi 阅读(432) 评论(0) 推荐(0) 编辑
摘要: C# 1之外:构建于坚实基础之上的新特性 C# 1之外:构建于坚实基础之上的新特性与委托有关的特性与类型系统有关的特性与值类型有关的特性 与委托有关的特性 各种委托在C# 2中得到了增强,C# 3中则获得了更特殊的待遇。大多数特性对于CLR来说都不是新内容,它们只是聪明的编译器变的一些“戏法”。 1.C# 2——改进委托实例化的过程 2.C# 3——Lambda表达式改进后的匿名... 阅读全文
posted @ 2016-11-02 13:51 qianzi 阅读(195) 评论(0) 推荐(0) 编辑
摘要: C# 1的核心基础之二——类型系统 C# 1的核心基础之二——类型系统C#的类型特征C# 1类型系统的限制总结 C#的类型特征 C# 1的类型系统是静态的、显式的和安全的。大多数情况下说C#是“强类型”就是指静态类型。 静态类型和动态类型 静态类型:每个变量都有一个特定的类型,并且该类型在编译时是已知的。 动态类型:编译器不能执行类型检查,相反会试图采取一种合适的方式来理解引用值的给... 阅读全文
posted @ 2016-11-02 13:40 qianzi 阅读(317) 评论(0) 推荐(0) 编辑
摘要: C# 1的核心基础之一——委托 C# 1的核心基础之一——委托简单委托的构成合并和删除委托事件的简单讨论委托总结 简单委托的构成 声明委托类型; delegate void StringProcessor(string input); 为委托实例的操作找到一个恰当的方法 void PrintString(string x)完全符合要求 void PrintInteger(int x)... 阅读全文
posted @ 2016-11-01 17:36 qianzi 阅读(335) 评论(0) 推荐(0) 编辑
摘要: C#进化史 C#进化史从数据类型看C#演化C# 1写的产品类C# 强类型集合——解决限制1和2c# 自动属性——解决限制3c# 4 命名实参C# 1~C# 4的演变历程排序C# 1——提供一个IComparer实现C# 2——泛型比较器C# 3——Lambda表达式、扩展方法C# 1~C# 3简化排序的历程查询集合C# 1——循环测试条件C# 2——测试和打印分开C# 3——移除委托逻辑的复杂包... 阅读全文
posted @ 2016-11-01 15:30 qianzi 阅读(545) 评论(0) 推荐(0) 编辑
摘要: 单一职责原则 1. 含义 最简单也是最难的原则。难处在于对职责进行划分。单一职责原则提出了一个编写程序的标准,用“职责”或“变化原因”来衡量接口或类设计得是否优良,但是“职责”和“变化原因”都是不可度量的,因项目而异,因环境而异。 2. 面向接口编程 用户类图 应该把用户的信息抽取成一个BO(Business Object,业务对象),把行为抽取成一个Biz(Business Logic... 阅读全文
posted @ 2016-10-31 15:06 qianzi 阅读(429) 评论(0) 推荐(0) 编辑