摘要:
最近在做一些单元测试,因为数据库里面的数据比较乱,不适合直接做单元测试的数据源,又不想自己再往里面插数据,把已经很混乱得数据库搞得更混乱,就直接写了从List<T>直接转换成对应的DataTable的类,然后在把这个DataTable再注入到单元测试里面。于是就有了这么一段代码:[代码] 这里有一个GetProperie... 阅读全文
摘要:
2 用Dom的方式创建/修改xml 上一篇讲了如何用dom的方式读一个xml,这一篇就讲一下如何用dom的方式去写一个xml。不过,用dom的写Xml本身并不是一个好主意,因为Dom方式本身的废话超多,做一个简单的事情就需要好几句语句,但是作为一个基本的方式还是有必要了解一下的。 2.1 用Dom的方式去创建xml 如果... 阅读全文
摘要:
Xml作为一个非常重要的纯文本格式已经进入了编程的很多领域,作为一个面向应用层面的c#也一样在很多领域离不开Xml。 但是,c#在很多方面对Xml做了写封装,以至于很多操作Xml的代码,都不需要手动去写。例如,c#写WebService这种需要大量操作Xml的服务,除了极其个别的情况下,基本看不到任何操作Xml的代码。这是c#的一个优势,但是,最近发现正是这样一些c#的优势,导致了新一代c#程序... 阅读全文
摘要:
1.提出问题 前面五篇说了如何实现,但是如果xml配置错了怎么办哪? 首先,利用Xsd,已经可以保证大部分xml的类型不会出错,但是,之前把Expression设计为弱类型的,也就意味着Expression不对其返回的类型负责,这是第一个在xml运行时存在的不稳定因素。 第二,变量本身也有不安全因素,首先变量名本身就非常容易出现书写错误,其次,变量名本身也是弱类型的,不到运行时,根本不知道里... 阅读全文
摘要:
1.实现接口 前面一篇已经确定了接口,并且已经生成了类,但是这些类显然还不完整,因为这些类没有实现任何接口。 不过,在实现接口之前,必须要注意的是ms的这一段警告: 这里清楚地说明了直接修改这段代码的一个风险:如果xsd发生变化了,那么再次用xsd.exe生成代码时,所做的修改讲丢失。这时要么手工迁移,要么就再写一遍,无论哪种,都是无法接受的。 因此,实现接口的代码不能放在生成的pptx.c... 阅读全文
摘要:
前面三篇把Xsd已经定义好了,这时,对组件开发者和组件使用者而言都已经知道xml将是一个什么样的了。但是组件的使用者依然无法全面开始工作,因为他们不知道如何让这个xml真正跑起来。 因此,这一篇就讲一下,如何定义接口(这里的接口是泛义的接口。在这一篇的第一、第二节暂时忘了Xml)。 1.定义接口 快速定义接口的方式,就是利用类关系图,创建接口: 一开始,当然需要定义一个入口: 定义一个Cre... 阅读全文
摘要:
代码块与变量 上一篇讲到了强大的表达式,这一篇讲一下一个对于语言而言同样重要的代码块。 先看一个c#的代码块: 注意看这个例子,里面其实有两个嵌套的代码块,一个是SomeMethod的方法体,在里面的那个代码块中,先定义了一个temp的变量,然后利用这个temp变量,去交换了s1和s2(定义在SomeMethod这个代码块中的变量)的内容。 这里可以看到代码块需要这样几个要素: 变量定义 ... 阅读全文
摘要:
千变万化的表达式 上回说到,去和组件的合作者以及组件的使用者讨论,还是从上一篇的最后的Xml开始: 还记得上一回说过,要完成这样一个修改pptx文本的几个要素吗? 在哪里修改(where) 修改成什么(what) 怎么修改(how to) 何时修改(when) 而上一次仅仅解答了where、what的问题,当然how依然不用关心,因为这回继续是讲xsd。 思考一下,然后来说说一些可以... 阅读全文
摘要:
初步创建一个Xsd 既然要写组件,当然就要确定这个组件的需求,以及确定如何去写。 一般情况下,组件的需求应该不是问题,因为对于这种封装技术难度的组件而言,需求很简单,就是尽量降低技术难度,让更多人能用这个组件,完成本来比较麻烦的事情。 那么从哪里开始写哪? 我选择了从xsd(XML Schema Definition)开始,为什么选择xsd哪? 在拥有xsd的情况下,可以很容易的写一个配... 阅读全文