Castle IOC:Windsor (二)

前言 在 Castle IOC:Windsor (一)中,引入了 IOC ,实现了最基本的控制反转,为了由浅入深的理解 IOC ,把接口和实现的注册,直接放在了主方法里。 实际的开发中,肯定不能这么做,这样做跟直接耦合没有多大差别。 这一章记录一下怎么把注册部分,放在配置文件中,真正发挥 IOC 的优势。 一,配置文件编写规则  

一文看懂 interface、abstract、virtual

前言 网上随处可见 “接口和抽象类的区别”、“抽象方法和虚方法的区别”、“接口与虚方法的区别” 等等类似的文章,我也曾经为之困惑,看了不少这样的文章,但是前面看后面忘,没有作用。 也是巧合,有一天忽然明白了语言设计者的设计思路,对这些问题的理解就很清晰了。 我的看法是,不要说接口、抽象类、抽象方法、虚方法有啥区别,理解了 interface、abstract、virtual 的作用,他们的区别自然就浮出水面了。 interface 这个关键字,放在类的名字前面作修饰符,表示声明一个 “接口(类) […]

C# 接口的正确使用方式

前言 之前写过一个 “接口” 的笔记: https://www.runner.ink/2018/08/04/csharp-interface/ 里面记录了对 “接口” 这一语法的基本规则和用途,随着码龄的增长,对 “接口“ 这一基本语法有了新的认识和理解。 大学的时候学的是嵌入式,用 C 语言,面向过程编程,导致我用了很长时间才对 “面向对象” 有所顿悟。 对接口进行编程 一,确认场景 我们需要一台复印机,这个复印机有一个功能:复印。 二、分析对象 创建一个复印机对象,“复印” 这个功能可以分为 […]

C# event 关键字的作用

前言 之前写过有关委托、事件、订阅的笔记,但是坦白地说,含有装逼的成分。传送门: C# 发布-订阅模式 C#委托和事件 上面的例子中,用到了 event 关键字,实际上也确实要用 event 关键字,但是不清楚 event 的作用。 那 event 到底有啥作用 根据我现在知道的,就一个作用:让委托只能由事件源触发,而不允许别的地方通过函数调用的方式触发。 新建一个控制台程序,写一个简单的例子。如下所示: 定义一个 Reader 类,类里定义了一个委托类型 ReadHandler ,返回值为 v […]

DoEvents() 小实验

前言 最近在看前辈代码的时候,发现代码的有些地方穿插着这么一句: Application.DoEvents(); 心里有点纳闷,程序都执行到这里了,难道还没 Do 么,还是说在等待什么。 查了一些资料后发现这货就是为了响应界面不至于假死用的。 举个例子 按钮按下,label1 的 Text 属性从 1 开始增加到 39999 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private […]