说这种方法是AOP其实有些牵强,只能说是多少带出了一点面向切面编程的影子。不过它的实现方法很简洁,不需要任何复杂的库的支持,唯一需要的就是C# 2.0,使用的关键技术是泛型编程和匿名委托。
我的需求是这样的:比如有一个函数,要从一个配置中取得一个整数值:
int GetIntValue()
{
try
{
return Int32.Parse(System.Configuration.ConfigurationManager.AppSettings["SomeSetting"]);
}
catch
{
return 20;
}
}
这里涉及了以下几点问题:
1 方法从一个配置文件中读取值,这个值在配置文件中也许不存在
2 也许在配置文件中存在,但它却不是一个有效的整数
3 基于1、2,需要为它做异常处理
4 当异常发生时,需要为它取一个缺省值
也许我要从配置文件里取很多值,涉及到各种类型,或者是从别处取值,但也涉及到类型转换等需要异常处理的情况,这时我们发现,这里“异常处理”成了这类方法的一个“方面”,如果使用AOP的方法,应该对这类方法进行拦截,并进行统一的异常处理。
利用C#2.0,我们可以把这个拦截工作变得很简单。
第一步,让它支持异常处理:
我们来定义一个统一的方法,使它可以进行异常处理:
更多内容请看PCdog.com--.NET基础介绍专题
