12 2011 档案
摘要:
在PostSharp中得OnExceptionAspect类是针对异常的消息截取。继承于它的特性将可以在发生异常的时候对方法体内的异常截取,并且做出动作,看是否停止本程序运行,还是忽略异常。
这个类里面有两个主要的函数可以重载分别是OnException(MethodExecutionArgs args)、GetExceptionType(System.Reflection.MethodBase targetMethod)。他们分别意义如下:
OnException(MethodExecutionArgs args):当发生异常时截取异常发生的位置(在哪个命名空间?哪个类?哪个方法?)、异常类型、异常消息等信息,并且可以异常将如何处理。
GetExceptionType(System.Reflection.M
阅读全文

摘要:
五个角色:部件(Component)、具体部件(ConcreteComponent)、装饰抽象类(Decorator)、具体装饰对象(ConcreteDecorator)、客户端(Client)
部件(Component):定义对象的接口,可以给对象动态增加职责。
具体部件(ConcreteComponent):实现对象。
装饰抽象类(Decorator):维护一个部件的实例,并且提供一个和部件相同的接口以使用。
具体装饰对象(ConcreteDecorator):实现装饰效果,增加职责。
客户端(Client):使用装饰包围部件,让部件增加功能。
实现思路:根据部件的需要动态的为部件增加职责功能。
阅读全文

摘要:
四个角色:抽象状态类(State)、具体状态类(ConcreateState)、情景类(Context)、客户端(Client)
抽象状态类(State):提供一个与情景类有关的State行为。
具体状态类(ConcreateState):实现这个行为,实现一个状态。
情景类(Context):维护一个State的实例对象,并且提供一个客户操作置换状态的接口。
客户端(Client):直接调用情景类操作即可。
实现思路:直接调用情景类,然后在情景类自动操作或者手动操作置换状态,并且取得不同结果。
阅读全文

摘要:
四个角色:抽象产品(Product)、具体产品(Concrete Product)、工厂(Creator)、客户端(Client)
抽象产品(Product):需要创建的各种产品的父类。这类产品有共同的接口。
具体产品(Concrete Product):需要创建的具体对象。
工厂(Creator):内部逻辑可以控制生成目标对象。
客户端(Client):实例化工厂,然后工厂根据传入参数得到各种产品。调用产品实现不同功能。
实现思路:首先将工厂实例化,然后使用工厂创建产品赋值给抽象产品的引用,然后通过抽象产品的公共接口调用具体产品的方法以实现功能。
阅读全文

摘要:
在PostSharp中得LocationInterceptionAspect类是针对属性或字段的面向方面截取。继承与它的特性将可以截取初始化属性、设置属性、获取属性等时候的数据,并且可以在这几个过程中针对属性进行附加控制。
这个类里面有三个主要的函数可以重载分别是RuntimeInitialize(LocationInfo locationInfo)、OnSetValue(LocationInterceptionArgs args)、OnGetValue(LocationInterceptionArgs args)。他们分别意义如下:
RuntimeInitialize(LocationInfo locationInfo):初始化包含属性或字段的类的时候运行此函数,增加控制代码,可以截取到运行此属性或字段的类信息,属性类型等信息
阅读全文
