Leo Zhang

A simple man with my own ideal

随笔分类 -  .Net

EL4.1配置文件管理浅谈(1)
摘要:一、前言 我们知道高耦合性的代码是很不方便变更的,可能会导致牵一发而动全身,为了解耦大家想了很多方法,例如依赖注入等等,常见的做法是将这种耦合外推到配置文件,那么如何能对配置文件进行很好的组织就成了一个比较重要的部分。本文以EL4.1的配置文件管理为例子,看下他们是怎么做的。 阅读全文

posted @ 2010-04-12 21:24 Leo Zhang 阅读(1279) 评论(2) 推荐(2) 编辑

浅析如何在ObjectBuilder2中用动态方法进行构造器注入
摘要:一、前言 在我看来,OB2是一个用来构建和管理对象的开放性的框架,我们可以根据自己的需求去扩展它,例如扩展它可以实现依赖注入(如MS的Unity)。我认为OB2最大的亮点之一是在提供了对象创建框架的同时能够管理对象以及对象之间的依赖关系,控制对象构建和销毁过程,这样对象的创建就不是直接去使用new而对象的销毁也不仅仅只靠GC了。要说OB2所使用的设计模式,我觉得可以认为是大量使用策略(Strategy)模式并辅以责任链模式,通过责任链组织对象创建或销毁的次序及步骤。 阅读全文

posted @ 2010-03-15 18:19 Leo Zhang 阅读(2018) 评论(6) 推荐(0) 编辑

Castle动态代理技术初探
摘要:假设朋友给我一个CalculatorLib.dll文件,里面包含了一个计算器接口和一个实现了该接口的计算器类,我的程序里要用到这个计算器来计算两个整数的和(仅作为简单例子,不考虑溢出处理等其他方面),计算器的实现大概如下: public interface ICalculator { Int32 AddOperation(Int32 p1, Int32 p2); } public class Calculator : ICalculator { public virtual Int32 AddOperation(Int32 p1, Int32 p2) { //① //② return p1 + p2; //③ } } 我的需求是:想在①这里为代码赋予修改输入参数和返回值的权限,在②更改参数和返回值,在③这里收回该权限,分两种情况 阅读全文

posted @ 2010-03-04 22:28 Leo Zhang 阅读(4059) 评论(18) 推荐(5) 编辑

理解.Net中带out、ref的方法签名和普通方法签名的区别
摘要:今天有位新同事问我.Net中带out、ref的方法签名和普通方法签名的有什么区别?我觉得可以从下面的例子说明一些关键的地方。 一、ref/out修饰符说明 对于用ref/out修饰符的说明在MSDN上有详细的说明,地址如下: http://msdn.microsoft.com/en-us/library/t3c3bfhx(VS.80).aspx。 二、透过IL代码观察ref/out修饰的方法签名(以值类型为例) 1、示例代码: 阅读全文

posted @ 2009-09-17 10:15 Leo Zhang 阅读(3015) 评论(22) 推荐(1) 编辑

Interface到底继承于Object吗?之我见
摘要:今天和同事讨论了一个问题:Interface到底继承于Object吗? 我看过的所有关于.Net的书都告诉我“所有的类型都是继承于System.Object的”,那么理所当然 Interface也是继承于System.Object的,以下面代码为例: 阅读全文

posted @ 2009-07-15 13:36 Leo Zhang 阅读(3908) 评论(63) 推荐(10) 编辑

使用.NET Remoting 技术并采用服务端SingleCall激活方式下如何实现客户端向服务端传递参数
摘要:.NET Remoting技术是构建企业级分布式应用的很好选择,(个人感觉随.Net Framework 3.0推出的WCF更加强大和易用),我们的项目采用服务端SingleCall方式来激活远程对象,在这种方式下最大的特点是当你new一个对象出来的时候并不会调用相应类型的构造函数,只有当你使用该类型的方法时才会调用构造函数,为换句话说就是SingleCall方式下不保存对象状态,这样做的好处是客户端不会长时间占用服务器资源,但是也就造成不能共享状态。 最近让我苦恼的一件事是:我想在客户端生成远程对象的时候传一个参数进去,但是服务端激活方式Singleton和SingleCall在生成远程对象时只支持调用无参的默认构造函数,所以在调用带参数的构造函数上我就死了心(不知道各位高手能不能搞定),下面我还原一下我的场景: 阅读全文

posted @ 2009-07-02 15:21 Leo Zhang 阅读(3237) 评论(11) 推荐(0) 编辑

如何从一个event事件的委托列表上移除事件
摘要:前些天有同事问我怎么从一个Button的Click事件中移除所有委托,我想了一下可以这样来做: 阅读全文

posted @ 2009-06-24 16:19 Leo Zhang 阅读(890) 评论(0) 推荐(0) 编辑

关于C#中动态加载AppDomain的问题
摘要:在操作系统中,利用进程可以对正在运行的应用程序进行隔离,每个应用程序被加载到单独的进程中,并为其分配虚拟内存,进程无法直接访问物理内存,只能通过操作系统将虚拟内存映射到物理内存中,并保证进程之间的物理内存不会重叠,但是进程最大的缺点就是效率问题,尤其是进程的切换开销很大,而进程间不能共享内存,所以不可能从一个进程通过传递指针给另一个进程。 在.NET中出现了一个新的概念:AppDomain——应用程序域,所有.NET应用程序都需要运行在托管环境中,操作系统能提供的只有进程,因此.NET程序需要通过AppDomain这个媒介来运行在进程中,同时使用该incheng提供的内存空间,只要是.NET. 阅读全文

posted @ 2009-06-24 15:50 Leo Zhang 阅读(4156) 评论(12) 推荐(0) 编辑

关于C#中Anonymous Method---匿名方法的基础知识
摘要:Anonymous Method--匿名方法说的是不对方法进行显式定义而将方法的执行代码直接封装到Delegate对象中,这样做的好处不仅仅是简化代码这么简单,它还可以帮助你进行多个方法间的状态共享和将代码段作为参数进行传递。一、Anonymous Method初探 下面看一个不使用Anonymous Method的例子: usingSystem;usingSystem.Collections.Generic;usingSystem.Windows.Forms;namespaceAnonymous_Method{staticclassProgram{///<summary>///应 阅读全文

posted @ 2009-05-08 15:16 Leo Zhang 阅读(1068) 评论(1) 推荐(0) 编辑

导航