利用Refly和CodeDom实现代码的动态生成和动态编译
摘要:CodeDom是.NET框架中比较强大也是比较难懂的对象模型,通过它可以实现.NET支持各种语言代码的动态生成及动态编译。我们先来看看CodeDom的定义:.NET Framework 中包含一个名为“代码文档对象模型”(CodeDOM) 的机制,该机制使编写源代码的程序的开发人员可以在运行时,根据表示所呈现代码的单一模型,用多种编程语言生成源代码。Refly则是国外一个开发者对CodeDom进行封装,目的是使得Codedom的实现更加方便易懂,和CodeDom的使用对比,代码更加简洁优雅,不过要了解整体的东西,也需要对CodeDOM进行详细的了解才能熟练应用。本人在研究学习Refly当中(详
阅读全文
C#利用QrCode.Net生成二维码
摘要:随笔- 6 文章- 1 评论- 15C#利用QrCode.Net生成二维码(Qr码)现在网上很多应用都是用二维码来分享网址或者其它的信息。尤其在移动领域,二维码更是有很大的应用场景。因为项目的需要,需要在网站中增加一个生成二维码分析网址的功能,在谷歌大幅度抽筋的情况下无奈使用百度。百度N多,找到一些项目,但是可用性不强。(有一个项目是用VS2005开发的,在2010中调试不开。)终于在codeplex上找到一个“神器”,这个“神器”可以很方便的生成二维码,速度那是相当的快,并且可支持中文,遵从MIT协议。QrCode.Net是一个使用C#编写的用于生成二维码图片的类库,使用它可以非常方便的为W
阅读全文
由浅入深:自己动手开发模板引擎——置换型模板引擎1
摘要:受到群里兄弟们的竭力邀请,老陈终于决定来分享一下.NET下的模板引擎开发技术。本系列文章将会带您由浅入深的全面认识模板引擎的概念、设计、分析和实战应用,一步一步的带您开发出完全属于自己的模板引擎。关于模板引擎的概念,我去年在百度百科上录入了自己的解释(请参考:模板引擎)。老陈曾经自己开发了一套网鸟Asp.Net模板引擎,虽然我自己并不乐意去推广它,但这已经无法阻挡群友的喜爱了!很显然,置换型模板引擎说的就是替换式模板引擎。它的工作原理是查找和替换字符串,但这个字符串的替换过程又分为直接查找替换和按流替代输出两种。直接查找替换实现简单,但存在一定的性能障碍,而按流替代的方式性能更好一点,但理解起
阅读全文
C#基础解析之【继承】
摘要:今天和大家探讨C#中面向对象的特性之二---继承何为继承?简单的一句话就是:建立类之间的关系,实现代码的重用性,方便系统扩展。说白了就是两个关键点:a.避免代码的冗余,b.进行程序扩展。接下来我们进行更进一步的了解继承,继承是面向对象程序设计的主要特征之一,它可以让使代码的重用性大大加强,可以节省程序设计的时间。继承就是在类之间建立一种相交关系,使得新定义的派生类的实例可以继承已有的基类的特征和能力,而且可以加入新的特性或者是修改已有的特性建立起类的新层次,比如子类(派生类)可以继承父类(基类) 某些成员,继承和类的成员方法一样,我们也可以定义属性的重载、虚属性、抽象属性以及密封属性的概念。继
阅读全文
WebBrowser 显示Html内容3点细节技巧
摘要:先上技术内容,后面再感慨几句:早在(新浪)微博粉丝精灵的评论平台(现在移到微博人气精灵)里,需要有空间来显示新浪微博的内容,如下图:在图片的右侧,是一个WebBrowser 控件,用来显示新浪微博的内容给用户评论,然则却遇到不少问题。直接显示Html内容,不像直接导航网址容易处理:问题:按微软的控件属性提示,可以用WebBrowser.DocumentText 属性赋值,但是这种赋值,只是首次有效,后续切换都没啥作用。为决定这个问题,自己花了点时间研究与摸索。下面给出自己追求摸索的两点技巧:1:通过WebBrowser.Document.Write(html)方法来输出html内容显示。由于W
阅读全文
解决System.Threading.Tasks.Task用户身份模拟(identity impersonate)的问题
摘要:在解决了ASP.NET访问共享文件夹的问题之后,我们遇到了一个新的问题。在找找看(http://zzk.cnblogs.com/)调度建立索引过程中,在共享文件夹中创建新文件夹时出现错误:System.UnauthorizedAccessException: Access to the path '\\192.168.18.18\ZzkIndex\Job\JobOffer\' is denied.之前我们明明通过测试代码验证了可以在共享文件夹中建立文件夹的,现在怎么不行呢?唯一不同之处在于这个操作是在System.Threading.Tasks.Task中进行的,也就是异步的。
阅读全文
使用PagedDataSource类 分页显示有几种方法
摘要:本篇文章主要说怎么使用PagedDataSource类实现DataList和Repeater控件的分页显示。DataGrid控件内部也使用了PagedDataSource类,PagedDataSource 类封装 DataGrid 控件的属性,这些属性使 DataGrid 可以执行分页。PagedDataSource 类的部分公共属性:AllowCustomPaging 获取或设置指示是否启用自定义分页的值。AllowPaging 获取或设置指示是否启用分页的值。Count 获取要从数据源使用的项数。CurrentPageIndex 获取或设置当前页的索引。DataSource 获取或设置数据
阅读全文
厚积薄发,丰富的公用类库积累,助你高效进行系统开发(11)---各种线程相关操作类
摘要:俗话说,一个好汉十个帮,众人拾柴火焰高等都说明一个道理,有更多的资源,更丰富的积累,都是助你走向成功,走向顶峰的推动力。本篇的公用类库的介绍主题是程序开发中多线程操作环境中,常用到的线程相关类,本篇随笔介绍包含单件创建辅助类、Timer定时器、委托处理辅助类、队列的线程处理服务辅助类、可以取消执行操作的线程池辅助类、线程池辅助类、线程辅助类等对象,这些辅助类覆盖了多线程开发中绝大多数的应用。良好的封装及操作,给我们提供非常方便、高效的线程操作处理。本篇继续继续整理优化已有的共用类库,并继续发表随笔介绍公用类库的接口方法以及详细使用操作,力求给自己继续优化,积攒更丰富的公用类库资源,加深了解的同
阅读全文
厚积薄发,丰富的公用类库积累,助你高效进行系统开发(12)--- 网络相关操作辅助类
摘要:俗话说,一个好汉十个帮,众人拾柴火焰高等都说明一个道理,有更多的资源,更丰富的积累,都是助你走向成功,走向顶峰的推动力。本篇的公用类库的介绍主题是程序开发中多线程操作环境中,常用到的网络操作相关类,本篇随笔介绍包含邮件发送辅助类(包含附件、嵌入图片等)、获取网页数据辅助类库、管理文档服务器类、网络相关操作辅助类、IE代理设置辅助类等对象,这些辅助类覆盖了网络编程开发中多数的应用。良好的封装及操作,给我们提供非常方便、高效的辅助类库操作体验。本篇继续继续整理优化已有的共用类库,并继续发表随笔介绍公用类库的接口方法以及详细使用操作,力求给自己继续优化,积攒更丰富的公用类库资源,加深了解的同时,也给
阅读全文
网络世界中的图片以及相关的处理
摘要:内容摘要这一讲中,我讲解了网络世界中图片格式,以及他们的一些特点JPG 或者JPEGGIFPNG同时,还通过实例讲解了三种常见的提高网页显示图片的速度的策略根据80/20法则,先显示较小的图片,只有当真正需要的时候,才显示大图片使用异步加载的方式,加载大图片使用延迟加载的策略,实现更加智能化的加载方式讲义地址https://skydrive.live.com/redir.aspx?cid=bb01f26f28894a40&resid=BB01F26F28894A40!127&parid=BB01F26F28894A40!111视频地址http://www.tudou.com/p
阅读全文
什么是线程池
摘要:概述 到目前为止我们使用多线程应用程序的目的是尽可能多地使用计算机处理器资源。所以,看起来我们仅需要为每个独立的任务分配一个不同的线程,并让处理器确定在任何时间它总会处理其中的某一个任务。额,对小系统来说这样做很好。但是当系统越来越复杂时,线程的数量也会越来越多,操作系统将会花费更多时间处理锁分配,理清线程之间的关系,处理程序指令的时间实际上是很少的。为了让我们的程序具备可扩展性,我们将不得不对线程进行一些控制。 对那些生存周期比较短的线程来说,使用线程池来处理任务要比为每个任务都创建一个线程然后顺序地回收它们要高效得多。一个任务,在概念上说,可以是一个单一方法的执行过程或者一系列方法的执行过
阅读全文
.Net中通过反射技术的应用----插件程序的开发入门
摘要:再开始之前,先学习基本基本的概念.程序集:所有.Net类都是定义在某个Assembly(程序集)中的,.Net基本类是定义在mscorlib.dll中。exe也可以看做是类库,也可以引用。.net的exe也是Assembly,.net中的exe和dll的区别就是exe中包含入口函数,其他没有区别,exe也可以当成dll那样引用、也可以反编译。GAC:全局程序集缓存。公用的Assembly放到GAC中,我们新建一个项目,会发现引用的程序集,如system,找不到这个dll放在哪里,实质上系统已注册到全局GAC中程序集包含描述它们自己的内部版本号和它们包含的所有数据和对象类型的详细信息的元数据。程
阅读全文
公用类库积累
摘要:俗话说,一个好汉十个帮,众人拾柴火焰高等都说明一个道理,有更多的资源,更丰富的积累,都是助你走向成功,走向顶峰的推动力。本篇的公用类库的介绍主题是程序开发中多线程操作环境中,常用到的线程安全的各类同步集合、字典等对象,这些辅助类通过封装及继承关系,获得更加丰富完善的集合类,并且增加了线程锁,实现多线程访问的集合类。本篇随笔介绍包含有有序字典集合、同步字典集合、有序同步字典集合、同步列表、同步先进先出队列等对象。本篇继续继续整理优化已有的共用类库,并继续发表随笔介绍公用类库的接口方法以及详细使用操作,力求给自己继续优化,积攒更丰富的公用类库资源,加深了解的同时,也给大家展现公用类库好的方面。厚积
阅读全文
Ext.net中如何上传文件
摘要:今天在使用ext.net的UploadField控件想上传文件时,发现examples.ext.net官网上的例子写的不是很详细。于是通过网上找资料,结合asp.net的文件上传的方法,终于实现了图片的上传功能。以下就是实现的代码,供大家参考!首先在.aspx文件中插入一个文件上传的控件:<ext:FileUploadField ID="UploadFile" runat="server" FieldLabel="附件上传" ButtonText="浏览..."/>然后是.cs文件中实现上传的具体代码:
阅读全文
Excel与数据库之间的那些事
摘要:说起Excel几乎是人人熟知的,一般人都会用他来记录一些数据,这种方式很方便他们的使用,他们可以很方便的对这些数据进行操作。可现在问题就来了,为了方便用户的这种需求,开发人员就必须把他们的数据变成自己的程序代码可以操作的数据,并且将数据操作完成以后,还要生成客户需要的数据。那么在这个过程中就涉及到了,Excel表的数据与数据库表数据的交互问题。在这里我只针对SQL数据库来说明我对Excel数据的操作 首先我对自己的思路做一个整体的概述:我在这里做一个公共实现方法:(具体代码是在放在一个类ImportExcel) 实现思路: (1)将要导入的Excel表格上传到服务器路径的临时存储文件夹,并保.
阅读全文
JSM SqlHelper 2.0 新特性(C#)
摘要:本文主要介绍JSM SqlHelper2.0新版本的特性和用法,欢迎大家提出宝贵意见!JSM SqlHelper2.0新特性继承了原SqlHelper的静态方法模式并加以优化。增强web.config配置支持,以方便网站的日常维护。增加面象对象类,使用SqlHelper对象可以轻松实现复杂的程序逻辑。增加对Access、Oracle、MySql数据库支持。增加TableFramework类,用于实现简单的Insert和Update语句,自动生成参数和Sql语句,减少代码量。JSM SqlHelper 配置方法 打开web.config文件,配置configuration节点下的configur
阅读全文
mutex互斥锁
摘要:NET多线程探索-互斥锁,信号量,事件(小新和拆弹部队友情演出)2012-03-22 17:14 by 海不是蓝, 835 visits,收藏,编辑mutex互斥锁-不准确的时钟概念性的东西:互斥锁是一个互斥的同步对象,一个时间只有一个线程可以获取它。前一篇文章中的时钟程序我们这里用Mutex互斥锁来实现。class Program{ static void Main(string[] args) { Clock C = new Clock(); C.RunClock(1); Console.Read(); }}public clas...
阅读全文
HttpClient介绍
摘要:使用RestSharp 库消费Restful Service中介绍了一个开源的Http Client库RestSharp。在ASP.NET MVC 4中也带来.NET框架中的Http Client。它提供了一个灵活的、可扩展的API来访问一切通过HTTP公开的RESTful服务。HttpClient是ASP.NET Web API的一部分,直接包含在.NET 4.5中,也可以单独安装ASP.NET MVC4,可以通过Nuget包获取,包里面包含以下3部分:System.Net.Http: The main NuGet package providing the basic HttpClient
阅读全文
深入解析委托与事件
摘要:引言本篇文章将为你介绍一下 Delegate 的使用方式,逐渐揭开 C# 当中事件(Event)的由来,它能使处理委托类型的过程变得更加简单。还将为您解释委托的协变与逆变,以及如何使用 Delegate 使 Observer(观察者)模式的使用变得更加简单。在事件的介绍上,会讲述事件的使用方式,并以ASP.NET的用户控件为例子,介绍一下自定义事件的使用。最后一节,将介绍Predicate<T>、Action<T>、Func<T,TResult>多种泛型委托的使用和Lambda的发展过程与其使用方式。因为时间仓促,文中有错误的地方敬请点评。目录一、委托类型的
阅读全文
P2P编程
摘要:1.P2P基本原理 在所有的P2P应用中,对等节点首先必须能够彼此发现对方,一旦能够找到提供P2P服务的计算机节点,就可以直接与它通信。例如,计算机A要下载某个MP3文件x,首先需要发现拥有文件x的P2P计算机节点,而后直接和该计算机节点通信,完成文件传输。P2P应用程序应该包括三个阶段:发现,连接和通信。发现阶段负责动态定位对等节点的网络位置;连接阶段负责在对等节点之间建立网络连接;而通信阶段负责在对等节点之间传输数据。2.P2P资源发现演示2.1 发布资源 同时开启4个进程,模拟网络上对等的4个计算机节点,如图1所示。 为了便于描述,把这四个进程分别编号为进程A,进程B,进程C,进程D,各
阅读全文