摘要: Javascript跨域调用的问题折腾了我好几天,主要参考了博客园大牛jillzhang的两篇博客ExtJs与WCF之间的跨域访问再说ExtJs与WCF之间的跨域访问博客中没有提供工程源码下载,我把其中的代码拷下来运行,extjs部分始终取不到数据。可能Extjs4和WCF都有了一些变化,而这两篇博客比较老,所以运行不了。经过一些修改(主要是加了WCF配置文件的部分),终于可以运行下面这个Grid分页的例子了。1. Extjs4 部分的代码主要有2部分:一部分是html,一部分是jshtml部分代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 阅读全文
posted @ 2011-08-30 22:56 wang_yb 阅读(2183) 评论(0) 推荐(0) 编辑
摘要: 关于AOP的介绍,园子里曾经有段时间非常热。我也看了很多AOP相关的文章,对AOP的概念有一定的了解,觉得园子里的大牛张逸的AOP介绍很不错:AOP技术基础看了很多AOP的介绍之后,很想自己实现一个简单的AOP来感受一下,但是一直苦于不知道怎么实现。后来看了园子里的一个介绍Emit的系列(Emit学习系列文章导航),才开始在原作者的基础上实现了简单的AOP框架,仅供学习使用。1. ThinAOP的介绍此框架非常简单,只有几个文件。但是就是因为简单,所以可以用来学习AOP的思想。由于主要部分是有Emit实现的,所以没有Emit基础的话,最好先看一下Emit学习系列文章导航具体结构如下:2. Th 阅读全文
posted @ 2011-08-10 10:57 wang_yb 阅读(4527) 评论(9) 推荐(3) 编辑
摘要: 接口(interface)和类(class)是CLR中应用最为广泛的两个概念。灵活的应用接口,可以构造出各种经典的设计模式。接口的语法并不复杂,本篇主要记录接口中一些容易忽略的地方,以及如何更好的使用接口。主要内容:接口的继承显式接口泛型接口和约束接口和抽象类1. 接口的继承当子类继承父类后,父类继承的接口也一并继承了过来。如下例中的类Sub当子类继承父类后,子类可以再次继承父类已经继承的接口。如下例中的类Sub2这两者的区别在对接口方法调用,参见下面代码中的注释。using System;sealed class CLRviaCSharp_15{ static void Main(strin 阅读全文
posted @ 2011-07-28 17:03 wang_yb 阅读(693) 评论(0) 推荐(0) 编辑
摘要: 为了更好的利用泛型,现将泛型的一些高级特性总结一下。主要内容:泛型的协变和逆变泛型的参数的约束1. 泛型的协变和逆变对于泛型参数(一般用T表示),指定了类型之后。就只能识别此类型,面向对象中的继承并不适用泛型参数,比如T指定为ClassA,尽管ClassB是ClassA的子类,也不能代替ClassA来作为泛型参数。但是,利用泛型的协变和逆变之后,我们可以写出更加灵活的泛型代码,避免不必要的强制转型操作。首先看下面的示例代码:using System;class CLRviaCSharp_14{ // 泛型委托,其中委托的参数和返回值都是泛型 public delegate TResult Pr 阅读全文
posted @ 2011-07-25 14:09 wang_yb 阅读(818) 评论(0) 推荐(0) 编辑
摘要: .net2.0开始就引入了泛型的机制,泛型有助于我们实现“算法重用”。借助于泛型机制,我们可以少定义一些重载函数,同时还能保证类型安全性。泛型的语法非常简单,下面通过例子来演示泛型的一些应用。主要内容:减少装箱/拆箱(提高性能)限制泛型参数的类型节点类型不同的链表1. 减少装箱/拆箱(提高性能)我们都知道,.net中的额装箱/拆箱操作非常损害性能,通过使用泛型,可以有效的减少我们代码中的装箱拆箱操作,从而提高代码的性能。实例代码如下:using System;using System.Collections.Generic;using System.Collections;class CLRv 阅读全文
posted @ 2011-07-19 17:00 wang_yb 阅读(747) 评论(0) 推荐(0) 编辑
摘要: 偶尔在园子里看到.net的轻量级ORM框架Petapoco的介绍,觉得很有趣。相关介绍:PetaPoco:适用于.NET的微型ORM正好最近有个C#+Oracle11g的项目,想趁此机会试试用petapoco来做数据层的框架。在配置步骤和遇到的问题,记录如下。1. 首先配置ODP.net,使得可以通过C#来连接Oracle。配置ODP.net的方法请参考我之前的博客:C# 连接Oracle(利用ODP.net,不安装oracle客户端)2. 安装Petapoco安装Petapoco,首先得安装Nuget,可以通过VisualStudio2010的Extention Manager来搜索,并安装 阅读全文
posted @ 2011-07-12 23:46 wang_yb 阅读(5962) 评论(12) 推荐(1) 编辑
摘要: 为了方便部署连接oracle的.net程序,oracle官方提供了一个简化版的client,即instant client。通过instant client和ODP.net中的Oracle.DataAccess.dll,我们就可以方便的部署.net应用程序或者站点。1. ODAC的安装在oracle的官方网站上下载与你安装的oracle对应版本的ODAC。下载地址:ODAC Download下载好后解压安装,安装时不用安装全部的组件。主要安装以下组件:Oracle Instant ClientOracle Data Provider For .net2.0Oracle rovider For 阅读全文
posted @ 2011-07-11 20:31 wang_yb 阅读(34043) 评论(15) 推荐(4) 编辑
摘要: 熟悉C#中的事件机制,使得我们可以编写出更加贴近于实际情况的程序。主要内容:本例中事件的场景介绍事件的构造注册/注销事件事件在编译器中的实现显式实现事件1. 本例中事件的场景介绍为了更好的介绍事件的机制,首先我们构造一个使用事件的场景(是我以前面试时遇到的一个编程题)。具体场景大概是这样的:某工厂有个设备,当这个设备的温度达到90摄氏度时,触发警报器报警,同时发送短信通知相关工作人员。当时我就简单的构造3个类:设备(Equipment),警报器(Alert),短信装置(Message)。传统的实现方法:1. 警报器类(Alert)中编写一个报警的方法(StartAlert),短信装置类(Mes 阅读全文
posted @ 2011-07-11 15:06 wang_yb 阅读(830) 评论(0) 推荐(0) 编辑
摘要: 匿名类型使得C#更具动态性。而元组则是以前看python时就了解的一个类型,与List类型类似,只是它里面的元素是不可变的。主要内容:匿名类型介绍元组的介绍1. 匿名类型介绍匿名类型其实也像元组一样,定义了以后就不能更改里面元素的名称和个数。使用匿名类型的代码非常简单:using System;namespace cnblog_bowen{ public sealed class CLRviaCSharp_11 { static void Main(string[] args) { var v = new { Name="my name", Age=100 }; Conso 阅读全文
posted @ 2011-07-08 10:58 wang_yb 阅读(934) 评论(0) 推荐(0) 编辑
摘要: C#中也可以像动态语言那样,定义可选参数和可变数量参数。通过使用可选参数和可变数量参数可以构建更加灵活的函数。主要内容:可选参数可变数量参数1. 可选参数可选参数即调用函数时,传递参数的个数和顺序和定义的不一致。这样不用重载,也可以实现类似重载的多个版本的函数定义。示例代码如下:using System;namespace cnblog_bowen{ public class CLRviaCSharp_10 { static void Main(string[] args) { /* 输出结果 * i=1, s=Z, dt=00010101 00:00:00, g=00000000-0000- 阅读全文
posted @ 2011-07-04 15:53 wang_yb 阅读(895) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示